编写单元测试以命中控制器,控制器的代码为:
public HttpResponseMessage InsertByKittyId(.....
...
if (result.Success)
return Request.CreateResponse(HttpStatusCode.OK);
else
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new Exception(result.Message));
在我的单元测试中,它应该使用代码生成错误响应:
var response = kittenController.InsertByKittenId(123);
Assert that response is an Error Response ?
var exceptionResult = (Error Response)response; ?
Assert.AreEqual("Bad Kitty", exceptionResult.Exception.Message);
有没有办法用?写两行,或者我应该检查响应代码是不是2xx而是完全忽略错误方面?如果是这样,我将需要找到一种方法来解决异常。
编辑:
我想知道是否有办法区分CreateResponse和CreateErrorResponse而不是查看错误代码,因为在某些情况下我想附加一个异常,在某些情况下它本身并不是'错误'。 / p>
否则我可以Request.CreateResponse(HttpStatusCode.InternalServerError);
但也许没有区别?
答案 0 :(得分:1)
有两种方法。
首先,您可以检查状态代码是否以“2”开头,它看起来像这样。
response.StatusCode.ToString().StartsWith("2");
第二种方法是使用响应的IsSuccessStatusCode属性并检查它。
!response.IsSuccessStatusCode
答案 1 :(得分:0)
Assert.IsTrue(response.StatusCode.ToString()[0] == '2');
那将检查是否是2xx错误。
Assert.IsTrue(response.IsSuccessStatusCode);
如果发生故障,那将更加一般地检查。