我创建了一个带有 GET、POST、PUT 路由的 webapi 项目,这些路由在邮递员中运行良好。但是当我进行集成测试时,只有 GET 和 POST 路由通过。在集成测试中发出 PUT 请求时,它会抛出 MethodNotAllowed Error (405 - Method not allowed)。
系统:Ubuntu 18.10 dotnet 版本:2.2.100
任何建议/方向将不胜感激。
namespace TestingMvc.Tests {
public class JsonContent : StringContent {
public JsonContent (object obj):
base (JsonConvert.SerializeObject (obj), Encoding.UTF8, "application/json") { }
}
public class MyTest : IClassFixture<WebApplicationFactory<WebApi.Startup>> {
private readonly WebApplicationFactory<WebApi.Startup> _factory;
public MyTest (WebApplicationFactory<WebApi.Startup> factory) {
_factory = factory;
}
// This is Ok -> Returns 200
[Fact]
public async Task Get_Attachments () {
var client = _factory.CreateClient ();
var response = await client.GetAsync ("/attachments");
Assert.Equal (HttpStatusCode.OK, response.StatusCode);
}
// This is Ok -> returns 200
[Fact]
public async Task Post_Attachments () {
var client = _factory.CreateClient ();
var response = await client.PostAsync ("/attachments", new JsonContent(new { a = "foobaz" }));
Assert.Equal (HttpStatusCode.OK, response.StatusCode);
}
// This is not ok -> returns 405 Method not allowed
[Fact]
public async Task Put_Attachments () {
var client = _factory.CreateClient ();
var response = await client.PutAsync ("/attachments", new JsonContent(new { a = "foobaz" }));
Assert.Equal (HttpStatusCode.OK, response.StatusCode);
}
}
}
慕盖茨4494581
忽然笑
相关分类