首页 > 解决方案 > 如何在 ASP.NET MVC 5 项目中编写单元测试?

问题描述

我有一个在 ASP.NET MVC 5 框架之上用 c# 编写的项目。我使用Unity-container设置了一个 IoC来处理依赖注入。

我需要编写一些测试用例来帮助我测试我的项目。我在我的解决方案中添加了一个新项目(单元测试项目(.NET Framework))进行测试。在我的第一个测试类中,我需要利用我的Ioc容器来解决依赖关系。

我尝试为我的测试类进行构造函数注入,但我收到一个错误,指出存在无参数构造函数。

如何正确设置我的测试类,以便从IoC容器初始化我的依赖项并准备好进行测试?

这是我的第一个测试课

[TestClass]
public class AnnouncerTests
{
    private static IAnnouncer Accouncer;

    [ClassInitialize]
    public static void SetUp(TestContext context)
    {
        // this does not work
        var container = UnityConfig.GetConfiguredContainer();

        Accouncer = new Announcer(container);
    }

    [TestMethod]
    public void Multiple_Events_Fire_When_Event_Rises()
    {
        var user = new User()
        {
            FirstName = "First Name Test",
            LastName = "Last Name Test"
        };

        Accouncer.Announce(new UserWasCreated(user));
        // Assert .....


    }
}

如何从测试类中解析 IoC 中的类型?

标签: c#asp.net-mvcunit-testingunity-container

解决方案


您不需要在测试中使用容器。该容器只需要解决应用程序中的依赖关系,没有理由在测试中使用它。

对于测试类,您必须模拟您的依赖项。有很多用于模拟和创建测试数据的库:Moq、NSubstitute、Autofixture。

在此处发布有关如何使用 Moq 在 mvc 中测试控制器的信息


推荐阅读