我想设置对Moq中模拟对象的方法的期望。与此同时,使用Ninject时,只要调用者需要相应的接口,我就试着让内核返回我的设置模拟。为了更清楚起见,这里有一些伪代码.net的依赖注入和模拟框架
Class Car {
Void buildChassis() {
Engine = ObjectBuilder.get<Iengine>()
Engine.performCheckup()
}
}
当测试buildChassis时,我想插入一个模拟引擎。
Mock<Iengine>().setup().etc.etc.etc
但是,Moq对Ninject不太好:我无法做到这一点。我想知道是否有任何强大的软件包可以集成DI和嘲讽。我无法使ninject.moq包工作,也没有成熟。
那么,在某些情况下,你真的需要创建一个类的新实例,只是将它添加到列表,例如等效。你会如何测试这些情况? (我有这个需要......) – 2010-06-30 17:50:49
@Andrei:用创建IEngine实例的方法注入一个IEngineFactory(单向;也可以注入一个委托)。 Moq可以模拟工厂,然后设置create方法的返回值以返回另一个模拟。 – TrueWill 2010-06-30 18:02:39
另请参阅http://www.tavaresstudios.com/Blog/post/Unity-20-Automatic-Factories.aspx - 不确定Ninject是否具有此功能。 – TrueWill 2010-06-30 18:04:27