【问题标题】:Does Moq ignore namespaces when setting up mocks?Moq 在设置模拟时会忽略命名空间吗?
【发布时间】:2009-07-06 20:32:27
【问题描述】:

第二个断言永远不会在下面的单元测试中执行:

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() 会覆盖 Get() 的设置。这是否意味着 Moq 在设置 Get() 时会忽略命名空间 Foo 和 Bar?有没有办法在不重命名 MyClass 类且不实现 IRepo 的情况下解决这个问题?我正在使用起订量 3.1.416.3。

更新:看起来这是 fixed 的下一个版本。

【问题讨论】:

    标签: unit-testing moq mocking


    【解决方案1】:

    起订量不会忽略命名空间。 这看起来像一个错误。 正确的举报地点是http://code.google.com/p/moq/issues/entry

    【讨论】:

    • 谢谢。有机会我会报告的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2011-12-05
    • 2015-02-18
    • 1970-01-01
    相关资源
    最近更新 更多