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消除了歧义。