我一直在尝试使用 OWIN TestServer 类实现集成测试,除了 PUT 或 DELETE 方法的实现之外,一切正常。POST 方法代码(有效)如下所示:
using (var server = TestServer.Create<Startup>())
{
var response = await server.CreateRequest(uri)
.AddHeader("Authorization", "Bearer " + _token)
.And(
request =>
request.Content =
new ObjectContent(typeof (T), command, new JsonMediaTypeFormatter()))
.PostAsync();
Assert.AreEqual(response.StatusCode, expectedStatusCode);
return await response.Content.ReadAsStringAsync();
}
要执行 PUT 请求,我尝试了以下两种方法:
using (var server = TestServer.Create<Startup>())
{
var response = await server.CreateRequest(uri)
.AddHeader("Authorization", "Bearer " + _token)
.And(
request =>
request.Content =
new ObjectContent(typeof (T), command, new JsonMediaTypeFormatter()))
.And(request => request.Method = = HttpMethod.Put)
.PostAsync();
Assert.AreEqual(response.StatusCode, expectedStatusCode);
return await response.Content.ReadAsStringAsync();
}
和
using (var server = TestServer.Create<Startup>())
{
var response = await server.CreateRequest(uri)
.AddHeader("Authorization", "Bearer " + _token)
.And(
request =>
request.Content =
new ObjectContent(typeof (T), command, new JsonMediaTypeFormatter()))
.And(request => request.Method = = HttpMethod.Put)
.SendAsync("PUT");
Assert.AreEqual(response.StatusCode, expectedStatusCode);
return await response.Content.ReadAsStringAsync();
}
SendAsync( " PUT")作为不受支持的方法返回。该参数不是可选的。PostAsync方法忽略HTTPMethod.Put并仍然尝试 POST 动词。
除了 POST 和 GET 之外,我如何使用这些动词和其他动词?