我不确定如何在单元测试中使用Ninject自动解析控制器的构造函数依赖项。
在我的实际应用程序中,我在我的gloabl.asax中设置了依赖注入,如下所示:
public void SetupDependencyInjection()
{
IKernel kernel = new StandardKernel();
kernel.Bind<ISomeService>().To<SomeService>();
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
我有一个带构造函数的控制器:
public SomeController (ISomeService someService)
这一切都很好,不知何故神奇地SomeController构造函数被someService作为参数调用。我不知道如何在我的单元测试中复制这种行为。也就是说,我想配置我的单元测试,这样我就不必通过构造函数自己创建控制器 - 我希望ninject能够像在实际应用程序中那样完成它。
提前感谢您的帮助!
答案 0 :(得分:0)
我不知道如何在我的单元测试中复制这种行为,但
在单元测试中,您可以使用模拟框架(例如Rhino Mocks或Moq)为依赖项生成模拟对象并定义对它们的期望。
Rhino Mocks示例:
[TestMethod]
public void Test_Something()
{
// arrange
var serviceMock = MockRepository.GenerateStub<ISomeService>();
serviceMock.Stub(x => x.SomeMethod(123)).Return("foo bar");
var sut = new SomeController(serviceStub);
// act
var actual = sut.SomeAction();
// assert
// TODO: assert on the result
}