1

现在,当创建响应HttpResponseMessage<T>和内容的构造函数消失了,如果你想测试你的控制器,你应该怎么做?Request.CreateResponse<T>应该改为使用,就像这样:

public HttpResponseMessage Post()
{
    // Do Something
    var response = Request.CreateResponse<SomeType>(System.Net.HttpStatusCode.OK, someObject);
    return response;
}

现在要测试这样的控制器,我必须对Request对象进行存根,因为这是基类上的一个属性,我应该使用它来创建响应,但这不是我喜欢的,我想知道我是否可以通过其他方式做到这一点?

4

2 回答 2

0

根据我的经验,如果您不需要修改 HttpResponseMessage,请避免在 ApiController 中使用它,这将使您的代码更简单:

public SomeType Post()
{
     // Do Something
     return someObject;
}

如果无法避免,这是您的答案:

使用 Request.CreateResponse 进行 ASP.NET WebApi 单元测试

于 2012-08-15T16:25:08.013 回答
0

如果您不返回 anHttpResponseMessage那么 WebApi 将调用 aMediaTypeFormatter为您将结果写入响应流(即它将使用 a为您MediaTypeFormatter创建一个HttpResponseMessage)。许多默认实现将执行类似于您上面的操作。最简单的解决方案是从您的函数返回SomeType,然后利用内置MediaTypeFormatters 之一进行转换。您可以单独或一起测试这两种解决方案。

于 2012-08-16T10:56:41.917 回答