如果我有async
网络API方法,则Request
对象为空(如this one等其他帖子中讨论的ID。)
在这种情况下,最常见的回复方法似乎是使用
之类的东西return new HttpResponseMessage(HttpStatusCode.OK) {
Content = new ObjectContent<T>(myObj, new JsonMediaTypeFormatter())
};
但是要格式化?通常Request
对象处理它,因为它知道请求了什么,但如果我没有Request
对象,那么我怎么知道请求的格式?webapi
答案 0 :(得分:3)
我的所有Web API方法都是异步的,我从来没有遇到过返回数据的问题。这是我的一个项目中典型的控制器方法:
[HttpGet]
[Route("v1/samples/{id}", Name="SampleGet")]
[ResponseType(typeof(string))]
public async Task<IHttpActionResult> Get(int id)
{
return Ok("value");
}
就像我说的那样,我从来没有遇到过这样的问题,而且我目前的所有项目都遵循这种一般模式。
单元测试响应如下所示。使用NUnit和FluentAssertions测试OK响应:
[Test]
public async Task GetReturns200IfSuccessful()
{
//Arrange
//Act
var response = await _sut.GetAsync();
//Assert
response.Should().BeOfType<OkNegotiatedContentResult<string>();
}
如果您想检查响应的值,请执行以下操作:
[Test]
public async Task GetReturnsValue()
{
//Act
var response = await _sut.GetAsync();
var result = response as OkNegotiatedContentResult<AssetList>;
//Assert
result.Should().Be("value");
}
希望有所帮助。