Подтвердить что ты не робот

Объекты moq Возвращает метод, должен возвращать нулевой объект

Я разрабатываю веб-API, и один из тестов, которые я придумал, заключается в том, что если клиент выполняет операцию GET с идентификатором физического теста (физический тест - это ресурс, который я ищу) и этот физический тест не найден, веб-API должен вернуть статус 404.

Теперь я использую рамки moq для своих тестов, и у меня есть следующий код:

[TestMethod]
public void then_if_physical_test_not_found_return_not_found_status()
{
    var unitOfWork = new Mock<IUnitOfWork>();
    var repository = new Mock<IRepository<PhysicalTest>>();
    repository.Setup(r => r.FindById(It.IsAny<int>())).Returns();
    unitOfWork.Setup(m => m.PhysicalTests).Returns(repository.Object);
    var pt = new PhysicalTestResource(unitOfWork.Object);
    HttpResponseMessage<PhysicalTest> response = pt.GetPhysicalTest(43);
    Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode)
}

Мне нужен метод Returns() для возврата нулевого объекта, который будет тем, что вернет фактический API-метод, если ресурс не найден.

Я попытался отправить значение null в качестве параметра в метод Returns(), но не имел успеха.

4b9b3361

Ответ 1

Вы не указали, что такое ошибка, но это должно работать:

unitOfWork.Setup(m => m.PhysicalTests).Returns((IRepository<PhysicalTest>)null);

Я подозреваю, что вы пытались вызвать его с помощью Returns(null), что заставляет компилятор жаловаться, поскольку Returns перегружен и не знает, какой метод следует вызывать. Приведение к определенному типу устраняет двусмысленность.