0
第二の主張は、下のユニットテストで実行されることはありません:モックはモックを設定するときに名前空間を無視しますか?
namespace Foo {
public class MyClass {
}
}
namespace Bar {
public class MyClass {
}
}
namespace Quux {
public interface IRepo {
object Get<T>() where T : new();
}
}
namespace Tests {
[TestFixture]
public class MyTests {
private Mock<Quux.IRepo> repo = new Mock<Quux.IRepo>();
[SetUp]
public void Setup() {
repo.Setup(r => r.Get<Foo.MyClass>()).Returns(new Object());
repo.Setup(r => r.Get<Bar.MyClass>()).Returns(new Object());
}
[Test]
public void Test() {
Assert.IsNotNull(repo.Object.Get<Foo.MyClass>());
Assert.IsNotNull(repo.Object.Get<Bar.MyClass>()); // Never reached.
}
}
}
は、Get <Bar.MyClass>()を設定するように見える<Foo.MyClass>を()を取得するための設定を上書きします。これはMoqが名前空間FooとBarを無視することを意味しますか?Get <T>()? MyClassクラスの名前を変更したり、IRepoを実装したりせずに、これを回避する方法はありますか?私はMoq 3.1.416.3を使用しています。
更新:これは次のリリースではfixedのようです。
です。私はチャンスがあるときに報告します。 –
問題が報告されました:http://code.google.com/p/moq/issues/detail?id=187 –