我有一个控制器,它使用以下消息从以下代码生成异常: -
public HttpResponseMessage PutABook(Book bookToSave)
{
return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Permission");
}
正在使用以下代码测试此方法: -
var response = controller.PutABook(new Book());
Assert.That(response.StatusCode,Is.EqualTo(HttpStatusCode.Forbidden));
Assert.That(response.Content,Is.EqualTo("No Permission"));
但是我收到的错误是内容不是“No Permission”。似乎我无法将响应强制转换为HttpError
以获取消息内容“No Permission”。状态代码返回正常。只是努力获得message content
。
答案 0 :(得分:9)
正如您在评论中所说,您可以使用response.Content.ReadAsAsync<HttpError>()
,也可以使用response.TryGetContentValue<HttpError>()
。
在这两种情况下,都会检查内容以查看其类型ObjectContent
及其值是否从中检索。
答案 1 :(得分:4)
试试这个。 response.Content.ReadAsAsync<HttpError>().Result.Message;
答案 2 :(得分:2)
您可以尝试以下方法:
var errorContent = await response.Content.ReadAsAsync<HttpError>();
Assert.That(errorContent.Message,Is.EqualTo("No Permission"));
答案 3 :(得分:0)
以这种方式阅读错误消息。
var ErrMsg = JsonConvert.DeserializeObject<dynamic>(response.Content.ReadAsStringAsync().Result);