现在当用HttpResponseMessage<T>
创建响应的构造函数和内容消失时,如果要测试控制器,应该怎么做?应该使用Request.CreateResponse<T>
代替,就像这样:
public HttpResponseMessage Post()
{
// Do Something
var response = Request.CreateResponse<SomeType>(System.Net.HttpStatusCode.OK, someObject);
return response;
}
现在要测试这样的控制器,我必须存根Request
对象,因为这是基类的属性,我应该用它来创建响应,但这不是我喜欢的东西,不知道是否我可以用其他方式做到吗?
答案 0 :(得分:0)
根据我的经验,如果你不需要修改HttpResponseMessage,避免在ApiController中使用它,这将使你的代码更简单:
public SomeType Post()
{
// Do Something
return someObject;
}
如果无法避免,请回答:
答案 1 :(得分:0)
如果你没有返回HttpResponseMessage
,那么WebApi将调用MediaTypeFormatter
来将结果写入响应流(即它将使用MediaTypeFormatter
来创建{ {1}}对你而言)。许多默认实现将执行类似于上面的操作。最简单的解决方案是从您的函数返回HttpResponseMessage
,然后使用其中一个内置SomeType
来进行转换。您可以单独测试两种解决方案。