moq对象返回方法,应该返回一个空对象
我正在开发一个Web API,而我想到的一个testing是,如果客户端使用物理testingID(物理testing是我正在寻找的资源)进行GET操作,并且没有find物理testing,Web API应该返回一个404状态。
现在,我为我的testing使用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方法将返回,如果找不到资源。
我尝试在Returns()方法中将null作为参数发送,但没有成功。
你不指出错误是什么,但是这应该工作:
unitOfWork.Setup(m => m.PhysicalTests).Returns((IRepository<PhysicalTest>)null);
我怀疑你试图调用它与Returns(null)
,这会导致编译器投诉,因为Returns
被重载,它不知道应该调用哪个方法。 投射到一个特定的types消除了歧义。