Dav*_* MZ 6 nunit unit-testing ninject mocking
我有以下问题,我想在我的单元测试中使用Ninject.我对此的想法是这样的:
1)在模块内定义一个全局绑定模式,以绑定我在测试中使用的假对象
2)当使用模拟对象时,在测试内部将其绑定
我没有找到一种在本地覆盖绑定配置的方法,我的想法是我在本地创建一个具有期望的模拟对象,我希望kernel.Get()方法返回一个具有所有绑定的对象,除了每个测试在测试中添加了一个带有期望的本地模拟对象,这听起来对我来说是可读和可维护的,因为我每次测试只覆盖1个绑定,对象是模拟因此它们无法在模块内部配置,因为测试上下文未知
我怎样才能做到这一点,我正在使用c#和nunit.如果我的方法有误,我想听听正确的方法.
Sam*_*uel 35
我有同样的问题,我明白这不是一个好方法,但在我身边,我做集成测试; 不是单元测试.
这是我的解决方案:
Kernel.Rebind<TypeToBind>().ToConstant(Mock.Object);
Run Code Online (Sandbox Code Playgroud)
其中Kernel是您用于创建绑定的对象.TypeToBind是您要注入依赖项的类型.Mock.Object是您先前设置的对象.
同样,我知道它并不是很酷,但在处理难以插入单元测试的遗留代码时,这可能是一个拥有良好安全网的救赎.
您不应该使用 IoC 容器来创建要在单元测试中测试的对象。相反,使用手动创建它new并为每个构造函数参数传递一个模拟/存根对象。