Вы хотите проверить " ожидаемое поведение " тестируемого члена. Поскольку тестируемый элемент не возвращает проверяемого вывода и зависит от внешних абстракций, вы должны иметь возможность отслеживать взаимодействие тестируемого элемента с этими внешними абстракциями и проверять ожидаемое поведение
Один из таких примеров
public void CreateCarService_Create_Should_Add_Car() {
//Arrange
Car car = new Car {
Login = "Login",
Email = "Email"
};
ICarQuery carQuery = Mock.Of<ICarQuery>();
ICarRepository carRepository = Mock.Of<ICarRepository>();
ICreateCarService subject = new CreateCarService(carQuery, carRepository);
//Act
subject.Create(car);
//Assert
Mock.Get(carRepository).Verify(_ => _.Add(car), Times.Once);
}
В приведенном выше примере безопасно проходит до конца тестируемого элемента, но предположим, что вы хотите проверить, что исключение выдается для случая с нулевым параметром.
public void CreateCarService_Create_Should_Throw_CusException_For_Null_Car() {
//Arrange
ICreateCarService subject = new CreateCarService(null, null);
//Act
Action act = ()=> subject.Create(null);
//Assert
var ex = Assert.Throws<CusException>(act);
}
Вы хочу создать тесты для всех возможных путей через тестируемый член. Так что найдите время и просмотрите тестируемый предмет и определите возможные тестовые случаи. Организовать предмет для удовлетворения этих случаев и выполнить эти случаи для проверки ожидаемого поведения.
Ссылка Быстрый запуск Moq , чтобы получить лучшее понимание того, как использовать структуру Moq Mocking.