Модульные тесты и IoC Autofac - должны ли мы использовать Mocks или IoC в модульных тестах - PullRequest
0 голосов
/ 25 января 2019

Я использую Autofac IoC в своем приложении, но я пытаюсь написать некоторые модульные тесты, и для создания экземпляров некоторых из моих моделей представлений мне нужно предоставить им некоторые зависимости.

Например, мой *Класс 1003 * зависит от некоторого объекта ISession, который может быть нашей собственной реализацией или третьей стороной:

public class Car
{
  public Car(ISession session) {...}
}

В реальном коде Autofac заботится об этом, регистрируя ISession и Car с помощьюAutofac контейнер, а затем разрешить его.Все в порядке.

Но для модульных тестов мне кажется неправильным использовать Autofac, регистрировать и разрешать их, как в коде приложения.

Мое понимание модульных тестов таково:

  1. Я думаю, что тесты Unite должны делать это с помощью mocks вместо IoC.Таким образом, вместо регистрации и разрешения ISession и Car, ISession должен быть смоделирован и передан объекту тестируемого (sut) объекта Car.
  2. В модульных тестах вообще не должен использоваться IoC, такой как Autofac или какой-либо другой, а только фиктивный.зависимостей.Это должно изолировать модульные тесты.Если мы используем IoC, мы будем проводить интеграционное тестирование, а не модульное тестирование.
  3. Юнит-тесты должны быть написаны разработчиком, интеграционные тесты должны быть написаны тестерами / qa

Это правильно?

...