【问题标题】:Play Framework PUT Request FailsPlay 框架 PUT 请求失败
【发布时间】:2014-08-18 08:08:28
【问题描述】:

我正在使用 Play Framework 2.2.3 创建一个 RESTful API,但我的测试遇到了一些问题。

我正在运行TestServer 来测试所有路线。我怀疑这是一个奇怪的问题。带有 JSON 负载的所有 PUT 请求总是失败。

FakeRequest fakeRequest = new FakeRequest(httpMethod, route);

if (jsonBody != null) {
    fakeRequest.withJsonBody(jsonBody);
}

Result result = route(fakeRequest); // <== result is 'null' for PUT with JSON body
assertEquals(status, status(result));

上面的摘录是我用来测试我的路线(GET / POST / DELETE / PUT)的摘录。这里还有更多需要考虑的点。

  1. 只有 PUT test 请求失败。当我运行应用程序时,我能够使用高级 REST 客户端 Chrome 插件发送成功的 PUT 请求并收到预期的响应。

  2. 如果没有 JSON 正文,则请求通过。

如果这是一个错误或者我做错了什么,请告诉我。谢谢。

【问题讨论】:

    标签: playframework playframework-2.0 integration-testing functional-testing put


    【解决方案1】:

    不久前有人问过这个问题,但我最近遇到了完全相同的问题。

    withJsonBody(JsValue json) 方法自动将 http 方法设置为 POST。要克服这个问题,您只需添加 http 方法作为第二个参数。

    在您的示例中,它看起来像这样:

    FakeRequest fakeRequest = new FakeRequest(httpMethod, route);
    
    if (jsonBody != null) {
        fakeRequest.withJsonBody(jsonBody, httpMethod);
    }
    
    Result result = route(fakeRequest); // <== result should now work for PUT with JSON body
    assertEquals(status, status(result));
    

    【讨论】:

    • 你说得对,我早就用同样的方式修复了它:)顺便说一句,谢谢你的回答。
    猜你喜欢
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 2014-03-16
    • 1970-01-01
    • 2015-05-17
    相关资源
    最近更新 更多