设置模拟时,Moq会忽略名称空间吗?
问题描述:
第二断言从不执行在下面的单元测试:设置模拟时,Moq会忽略名称空间吗?
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.
}
}
}
看起来设置获取<Bar.MyClass>()将覆盖设置为获取<Foo.MyClass>()。这是否意味着Moq在设置时会忽略名称空间Foo和Bar Get <T>()?有没有办法解决这个问题,而不重命名MyClass类,也没有实现IRepo?我正在使用Moq 3.1.416.3。
更新:看起来这是fixed下一版本。
谢谢。我有机会时会报告。 – 2009-07-13 21:29:35