Я разрабатываю сеть API, и один из теста, который я придумал, - то, что, если клиент делает ПОЛУЧИТЬ операцию с идентификатором Испытания физических свойств (Испытание физических свойств является ресурсом, который я ищу) и что испытание физических свойств не найдено, веб-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)
}
Мне нужны Возвраты () метод для возврата несуществующего объекта, который будет тем, что возвратил бы фактический метод API, если ресурс не найден.
Я пытался отправить пустой указатель в качестве параметра в Возвратах () метод, но не имел никакого успеха.
Вы не указываете, какова ошибка была, но это должно работать:
unitOfWork.Setup(m => m.PhysicalTests).Returns((IRepository<PhysicalTest>)null);
я подозреваю, что Вы пытались назвать его с Returns(null)
, который заставляет компилятор жаловаться, так как Returns
перегружается, и это не знает, какой метод нужно назвать. Кастинг к определенному типу удаляет неоднозначность.
rt
тип возврата метода: FindById
repository.Setup(r => r.FindById(It.IsAny<int>())).Returns(Task.FromResult((rt)null));