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

Я разрабатываю сеть 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, если ресурс не найден.

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

62
задан 22 November 2014 в 17:48

2 ответа

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

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

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

178
ответ дан 31 October 2019 в 13:16

rt тип возврата метода: FindById

repository.Setup(r => r.FindById(It.IsAny<int>())).Returns(Task.FromResult((rt)null));

3
ответ дан 31 October 2019 в 13:16

Другие вопросы по тегам:

Похожие вопросы: