В основном имитация имитирует экземпляр класса, который реализует IProductRepository
, путем введения прокси под капотом, который имеет те же методы и свойства, которые определены в базовом интерфейсе.
Следующая строка результатов настройки кода, которая будет возвращена, как только будет вызван метод доступа к свойству Products
.
mock.Setup(m => m.Products).Returns(...);
Относительно ProductController
,
Я полагаю, что его конструктор имеет аргумент типа IProductRepository
, поэтому для создания экземпляра ProductController
и его проверки необходимо создать экземпляр класса, который реализует IProductRepository
и передать его в конструктор контроллера, насмешка над IProductRepository
позволяет вам сосредоточиться на тестировании контроллера и не заботиться о каких-либо деталях реализации IProductRepository
. Пересмешка - это правильный способ симулировать зависимости класса в тесте, имея в руках только интерфейс. Итак, вы тестируете ProductController
и все зависимости проверяются.