c# - moq objects Returns 方法,应该返回一个空对象

标签 c# asp.net-mvc-3 mocking moq wcf-web-api

我正在开发 Web API,我想出的其中一项测试是,如果客户端使用物理测试 ID(物理测试是我正在寻找的资源)进行 GET 操作,并且该物理测试未找到,Web API 应返回 404 状态。

现在,我正在使用最小起订量框架进行测试,并且我有以下代码:

[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)
}

我需要 Returns() 方法返回一个空对象,如果找不到资源,这将是实际 API 方法返回的内容。

我尝试在 Returns() 方法中将 null 作为参数发送,但没有成功。

最佳答案

你没有指出错误是什么,但这应该有效:

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

我怀疑您试图用 Returns(null) 调用它,这会导致编译器报错,因为 Returns 被重载并且它不知道应该使用哪个方法叫。转换为特定类型可以消除歧义。

关于c# - moq objects Returns 方法,应该返回一个空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7919679/

相关文章:

java - PowerMockito 不会模拟测试类中调用的新实例

unit-testing - mockito when() 调用是如何工作的?

c# - 重复的元素名称 'PropertyName' Mongodb驱动程序c#异常

c# - 连接两个集合,从第二个集合中获取值(左外连接)

ASP.NET MVC3 图表 Web 帮助程序在 IIS7 上托管时不起作用

.net - 使用 MVC3/.NET 的异步文件 uploader ?

ruby-on-rails - 在 Rails 中测试范围链的最佳方法

c# - FxCop 死了吗?它可以与VS2015一起使用吗?

javascript - C# websocket服务器从javascript接收文本

c# - 重命名 Windows azure 的暂存 url