我有一个简单的HomeController
,其中发生了DI。
当我启动应用程序并调试HomeController
构造函数时,SomeService
不为null,这表示一切正常。
private ISomeService SomeService;
public HomeController(ISomeService SomeService)
{
this.SomeService = SomeService;
}
然后我进行了测试,注射不起作用。我用于DI的Unity不会将SomeService
注入ISomeService
中。在调试中,它是null
。我提到在Unity.config中,所有内容均已正确配置。
[TestFixture]
public class HomeControllerTests
{
private ISomeService SomeService;
private HomeController controller;
[SetUp]
public void SetUp()
{
controller = new HomeController(SomeService);
}
}
答案 0 :(得分:2)
您的代码中正在传递
private ISomeService SomeService;
放入HomeController
构造函数
controller = new HomeController(SomeService);
它将为 null ,因为您尚未在代码中的任何地方初始化“ SomeService”
您想对单元进行什么测试? HomeController
还是SomeService
?
如果您希望对HomeController
进行单元测试,则应模拟ISomeService
,以使HomeController
不依赖于服务。
我建议使用Moq框架来模拟ISomeService
并单独测试HomeController
。
以最简单的方式可以像这样初始化ISomeService
:
private ISomeService SomeService = Mock.Of<ISomeService>();