【发布时间】:2011-11-16 21:36:38
【问题描述】:
我有一个我正在尝试使用 moq 模拟的对象。对象的构造函数有必要的参数:
public class CustomerSyncEngine {
public CustomerSyncEngine(ILoggingProvider loggingProvider,
ICrmProvider crmProvider,
ICacheProvider cacheProvider) { ... }
}
现在我正在尝试使用 moq 的 v3“设置”或 v4“Mock.Of”语法为该对象创建模拟,但无法解决这个问题......我正在尝试的一切都没有验证。这是我到目前为止所拥有的,但最后一行是给我一个真实的对象,而不是模拟。我这样做的原因是因为我在 CustomerSyncEngine 上有要验证的方法正在被调用...
// setup
var mockCrm = Mock.Of<ICrmProvider>(x => x.GetPickLists() == crmPickLists);
var mockCache = Mock.Of<ICacheProvider>(x => x.GetPickLists() == cachePickLists);
var mockLogger = Mock.Of<ILoggingProvider>();
// need to mock the following, not create a real class like this...
var syncEngine = new CustomerSyncEngine(mockLogger, mockCrm, mockCache);
【问题讨论】:
-
你能提供一个你希望验证被调用的示例方法吗?
-
因此,如果我依赖于类而不是接口,我什至必须模拟它们的依赖关系,这会递归地下降。最后,我不得不使用一些接口来保持我的代码可测试,即使我的代码中不需要这些接口。我认为太多的接口比模拟具体类更臭……
标签: moq