Как написать модульный тест в проекте ASP.NET MVC 5? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть проект, который написан с помощью c # в верхней части ASP.NET MVC 5 Framework.Я настроил IoC, используя Unity-container для обработки инъекций зависимостей.

Мне нужно написать несколько тестовых примеров, чтобы помочь мне протестировать мой проект.Я добавил новый проект (Unit Test Project (.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 из тестового класса?

1 Ответ

0 голосов
/ 18 октября 2018

Вам не нужно использовать контейнер в вашем тесте.Контейнер, необходимый для разрешения зависимостей в вашем приложении, и нет причин использовать его в тестах.

Для тестирования классов вы должны смоделировать ваши зависимости.Существует множество библиотек для проверки и создания тестовых данных: Moq, NSubstitute, Autofixture.

Пост о том, как использовать Moq для тестирования контроллера в mvc здесь

...