반응형
moq 객체 반환 메서드, null 객체를 반환해야 함
저는 웹 API를 개발 중이며 제가 생각 해낸 테스트 중 하나는 클라이언트가 Physical Test ID (Physical Test는 제가 찾고있는 리소스)로 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)
}
리소스를 찾을 수없는 경우 실제 API 메서드가 반환 할 null 개체를 반환하려면 Returns () 메서드가 필요합니다.
Return () 메서드에서 매개 변수로 null을 보내려고했지만 성공하지 못했습니다.
오류가 무엇인지 표시하지 않지만 작동합니다.
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));
참고 URL : https://stackoverflow.com/questions/7919679/moq-objects-returns-method-should-return-a-null-object
반응형
'developer tip' 카테고리의 다른 글
* 사용을 정당화 할 수 있습니까? (0) | 2020.11.26 |
---|---|
Virtualenv로 pip를 통해 설치할 수 없습니다. (0) | 2020.11.26 |
최적화가 활성화 된 상태에서이 코드가 6.5 배 더 느린 이유는 무엇입니까? (0) | 2020.11.25 |
4가 Number의 인스턴스가 아닌 이유는 무엇입니까? (0) | 2020.11.25 |
생성자는 Liskov 대체 원칙을 준수해야합니까? (0) | 2020.11.25 |