17

我有一个控制器,它从以下代码生成异常并显示以下消息:-

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"));

但是我收到一个错误,内容不是“无权限”。似乎我无法将响应转换为HttpErrorany 以获取消息内容“无权限”。状态码返回正常。只是努力获得message content.

4

4 回答 4

17

正如您在评论中所想的那样,您可以使用response.Content.ReadAsAsync<HttpError>(),也可以使用response.TryGetContentValue<HttpError>(). 在这两种情况下,都会检查内容以查看其类型ObjectContent以及是否从中检索到值。

于 2013-06-13T08:14:57.547 回答
5

试试这个。response.Content.ReadAsAsync<HttpError>().Result.Message;

于 2013-06-13T08:15:50.977 回答
3

您可以尝试以下方法:

var errorContent = await response.Content.ReadAsAsync<HttpError>();
Assert.That(errorContent.Message,Is.EqualTo("No Permission"));
于 2013-06-13T08:23:56.487 回答
0

以这种方式阅读错误消息。

var ErrMsg = JsonConvert.DeserializeObject<dynamic>(response.Content.ReadAsStringAsync().Result);
于 2021-01-05T10:16:46.260 回答