期望JSON数据的API Post事件的本地测试

本文关键字:测试 事件 API JSON 数据 期望 Post | 更新日期: 2023-09-27 18:01:42

我有一个POST IHttpActionResult方法在我的API控制器使用[FromBody]属性。

    [Route("gameworld/generate")]
    public IHttpActionResult PostNewWorld([FromBody] WorldData json)

通常,当我想在本地测试我的控制器时,我只需要到URL。

然而,我不能用这个方法这样做,因为我得到这个错误:

请求的资源不支持http方法'GET'.

是否有办法让我的本地环境看到这是一个POST事件?谢谢!

期望JSON数据的API Post事件的本地测试

首先,ASP。. NET Web Api足够聪明,可以将json反序列化为对象,所以除非你真的希望在主体中得到字符串值,否则你可以在那里输入你的类型。

[Route("gameworld/generate")]
public IHttpActionResult PostNewWorld([FromBody] WorldData newWorld)

您可以使用Postman或Swagger之类的工具手动测试它,但是手动测试通常只做一次,然后就忘记了。这就为回归bug打开了方便之门,当你在将来做出改变时,忘记重新测试端点并使用api破坏应用程序。

因此,您应该编写单元测试来不断检查您的代码并防止回归错误。我一直在使用mytesting。WebApi在几个项目上,您可以测试路由和实际调用。例如:

MyWebApi
.Server()
    .Working()
    .WithHttpRequestMessage(req => req
        .WithRequestUri("api/bugs")
        .WithMethod(HttpMethod.Post)
        .WithContent(myJsonString)
    .ShouldReturnHttpResponseMessage()
    .WithStatusCode(HttpStatusCode.Created)
    .WithResponseModelOfType<BugReport>()
    .Passing(r => r != null);

有很多东西需要测试,所以一定要阅读文档