Это немного похоже на понимание DI в первом
place : - маленькие сэмплы на самом деле не отражают всю суть.
Контейнер для автоматической блокировки, такой как Ninject.Moq (или подобные библиотеки инфраструктуры тестирования, такие как AutoFixture ), трудно объяснить на простом примере. Я бы посоветовал прочитать все посты Марка Симанса о AutoFixture , чтобы почувствовать требование.
Таким образом, Ninject.Moq будет иметь дело с цепочкой, N уровней глубины набора заглушек реализаций интерфейсов, которые необходимы для удовлетворения вашей тестируемой системы в ходе выполнения того, что на самом деле тестирует должен быть тестирование.
В общем, вам нужны короткие, легко читаемые, простые в тестах тесты с минимальной сложностью и взаимодействием приборов под прикрытием (нет большой иерархии базовых классов или 6 различных магических методов, выполняющих дурацкие разборки и вызов базовых классов). Обычно эта цель будет означать, что вы должны держать свои мили DI слишком далеко от своих юнит-тестов.
Контейнер с автоматической блокировкой должен, как бензопила, использоваться только там, где вы собираетесь получить значительную реальную отдачу ( много * короче , более простые для понимания тесты) для ваших инвестиций (еще один инструмент, который нужно понять раньше) другие могут читать ваши тесты, больше отладки, больше сюрпризов, больше сложности, что приведет к хрупким, не поддерживаемым тестам).