如何从HttpActionResult Ok方法(Web Api)获取对象?

Sta*_*mov 17 c# asp.net-web-api

我正在学习一些Web Api基础知识,我想返回并传递一个对象Ok(object).像这样的东西:

[HttpGet]
public IHttpActionResult Get()
{
    var someString = "";
    return Ok(someString);
}
Run Code Online (Sandbox Code Playgroud)

现在我想测试这个方法并断言来自这个Get()方法的返回字符串是否与预期相同.我猜猜看会是这样的:

[TestMethod]
public void TestGet()
{
    IHttpActionResult result = controller.Get();
    Assert.AreEqual("", result.??);
}
Run Code Online (Sandbox Code Playgroud)

我看到了这个问题,但最好的答案是解释如何验证HttpStatusCode,而不是传递的对象.

Kha*_* TO 31

您可以通过将结果转换为OkNegotiatedContentResult<string>并访问其Content属性来访问返回的字符串.

[TestMethod]
public void TestGet()
{
    IHttpActionResult actionResult = controller.Get();
    var contentResult = actionResult as OkNegotiatedContentResult<string>;
    Assert.AreEqual("", contentResult.Content);
}
Run Code Online (Sandbox Code Playgroud)

示例代码来自:http://www.asp.net/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api

  • @CodeCaster:已更新.但有时候我认为代码很简单且不言自明. (7认同)