我在使用 Ninject 的 UnitTesting 项目中使用 Moq 时遇到问题。
首先是关于我的解决方案的几行。它包含几个项目(BussinesLogic、DAL、基础设施......)。我的目标是对我在 BussinessLogic 项目中使用的逻辑进行单元测试。该解决方案基本上是针对 Windows 服务的,但我已经输入了逻辑,因此它可以独立运行。我正在使用 Ninject 并指定天气我想使用 ProductionModule 或 TestingModule(Windows 服务使用 ProductionModule,控制台应用程序使用 TestingModule)
每当我在应用程序中需要它时,我都会使用工厂模式来获取 ninject 内核。
我的 TestingModule 继承自 NinjectModule,我在其中重写 Load() 方法并在那里进行绑定。例如:
Bind<IStorageManager>().To<StubStorageManager>();
我有 StubStorageManager 但它是空的。它只包含来自 IStorageManager 的方法声明。
我想做的事情是(用外行的话):创建一个unitTest,我将在其中创建一个新内核,指定TestingModule 作为它的参数。然后我想创建一个模拟对象(假设是 IStorageManager 的模拟) storageManagerMock。IStorageManager 中的某些方法返回一个 messageObject,所以我可能也需要模拟它,因为业务逻辑正在基于该 messageObject 做一些事情。所以我想以某种方式为该消息对象设置属性,然后在其上调用一些 businessLogic 方法,这样我就可以查看逻辑是否正常工作。
我希望我没有把它复杂化太多。
请耐心等待,我对模拟和依赖注入完全陌生,但愿意学习。