这可能是一个相当简单的问题,但我承认,我被困住了。
我有一个返回IHttpActionResult
的控制器,我需要为此编写单元测试。
这是控制器:
public IHttpActionResult GetPerson(int id) {
Person person = repository.Get(id);
if (person == null) {
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return Ok(new {
User = person
});
}
这是单元测试:
[TestMethod]
public void GetReturnsValidPerson() {
var userController = new UserController();
IHttpActionResult actionResult = userController.GetPerson(1);
Assert.IsInstanceOfType(actionResult, typeof(OkResult));
}
以下是测试中的错误:
Assert.IsInstanceOfType失败。预期 类型:System.Web.Http.Results.OkResult实际类型: System.Web.Http.Results.OkNegotiatedContentResult1并[d> f__AnonymousType11 [DataAccess.BO.Person]]
这到底发生了什么?从控制器返回的是HTTP 200 Ok响应。为什么期待OkNegotiatedContentResult
?
答案 0 :(得分:3)
根据Asp.Net文档,IHttpActionResult的结果为OkNegotiatedContentResult
。你的Assert比较应该检查一下。
Unit Testing Controllers in Asp.Net
操作返回200(确定)并带有响应正文
如果找到产品,则Get方法调用Ok(product)。在单位 测试,确保返回类型是OkNegotiatedContentResult和 退回的产品具有正确的ID。