C# 如何从HttpActionResult Ok方法(Web Api)获取对象?
我正在学习一些Web Api基础知识,我想通过C# 如何从HttpActionResult Ok方法(Web Api)获取对象?,c#,asp.net-web-api,C#,Asp.net Web Api,我正在学习一些Web Api基础知识,我想通过Ok(object)返回并传递一个对象。大概是这样的: [HttpGet] public IHttpActionResult Get() { var someString = ""; return Ok(someString); } [TestMethod] public void TestGet() { IHttpActionResult result = controller.Get(); Assert.AreE
Ok(object)
返回并传递一个对象。大概是这样的:
[HttpGet]
public IHttpActionResult Get()
{
var someString = "";
return Ok(someString);
}
[TestMethod]
public void TestGet()
{
IHttpActionResult result = controller.Get();
Assert.AreEqual("", result.??);
}
现在我想测试这个方法,并断言这个Get()方法返回的字符串是否与预期的相同。我猜会是这样的:
[HttpGet]
public IHttpActionResult Get()
{
var someString = "";
return Ok(someString);
}
[TestMethod]
public void TestGet()
{
IHttpActionResult result = controller.Get();
Assert.AreEqual("", result.??);
}
我看到了这个问题,但最好的答案是解释如何验证
HttpStatusCode
,而不是验证传递的对象。您可以通过将结果强制转换到OkNegotiatedContentResult
并访问其内容
属性来访问返回的字符串
[TestMethod]
public void TestGet()
{
IHttpActionResult actionResult = controller.Get();
var contentResult = actionResult as OkNegotiatedContentResult<string>;
Assert.AreEqual("", contentResult.Content);
}
[TestMethod]
公共void TestGet()
{
IHttpActionResult actionResult=controller.Get();
var contentResult=作为OkNegotiatedContentResult的actionResult;
Assert.AreEqual(“,contentResult.Content);
}
示例代码来自:与其测试结果是否完全等于某个值,不如测试结果中的什么内容?@JonSkeet您是对的。与其尝试测试传递的对象是否有效,我将只插入一些后置条件,并根据它们返回不同的
HttpActionResults
。非常感谢。实际上,有些情况下测试返回的结果是有意义的。@KhanhTO举个例子。例如:当您测试工厂方法时,您需要测试返回的对象是否为预期类型。测试返回的结果有意义的情况不胜枚举,这只是一个例子。@CodeCaster:updated。但有时我认为代码很简单,而且是不言自明的。