Я использую Autofac IoC в своем приложении, но я пытаюсь написать некоторые модульные тесты, и для создания экземпляров некоторых из моих моделей представлений мне нужно предоставить им некоторые зависимости.
Например, мой *Класс 1003 * зависит от некоторого объекта ISession
, который может быть нашей собственной реализацией или третьей стороной:
public class Car
{
public Car(ISession session) {...}
}
В реальном коде Autofac заботится об этом, регистрируя ISession
и Car
с помощьюAutofac контейнер, а затем разрешить его.Все в порядке.
Но для модульных тестов мне кажется неправильным использовать Autofac, регистрировать и разрешать их, как в коде приложения.
Мое понимание модульных тестов таково:
- Я думаю, что тесты Unite должны делать это с помощью mocks вместо IoC.Таким образом, вместо регистрации и разрешения ISession и Car, ISession должен быть смоделирован и передан объекту тестируемого (sut) объекта Car.
- В модульных тестах вообще не должен использоваться IoC, такой как Autofac или какой-либо другой, а только фиктивный.зависимостей.Это должно изолировать модульные тесты.Если мы используем IoC, мы будем проводить интеграционное тестирование, а не модульное тестирование.
- Юнит-тесты должны быть написаны разработчиком, интеграционные тесты должны быть написаны тестерами / qa
Это правильно?