无法在测试中将类插入接口

时间:2018-10-28 22:07:34

标签: c# nunit unity-container

我有一个简单的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);
    }
}

1 个答案:

答案 0 :(得分:2)

您的代码中正在传递

private ISomeService SomeService;

放入HomeController构造函数

controller = new HomeController(SomeService);

它将为 null ,因为您尚未在代码中的任何地方初始化“ SomeService”

您想对单元进行什么测试? HomeController还是SomeService

如果您希望对HomeController进行单元测试,则应模拟ISomeService,以使HomeController不依赖于服务。

我建议使用Moq框架来模拟ISomeService并单独测试HomeController

Moq Quickstart

以最简单的方式可以像这样初始化ISomeService

private ISomeService SomeService = Mock.Of<ISomeService>();