gpt4 book ai didi

perl - 在 mojolicious 中测试 JSON PUT 请求

转载 作者:行者123 更新时间:2023-11-28 20:04:06 24 4
gpt4 key购买 nike

我正在为使用 Mojolicious 框架开发的应用程序创建测试用例。我正在测试路由,以便对所进行的 REST 调用做出适当的响应。我使用 JSON 作为服务器和客户端之间的通信方式。来测试GET , POSTDELETE请求我使用以下功能

GET : get_ok()
POST: post_json_ok()
DELETE: delete_ok()

但对于 PUT我无法使用 put_ok() .我使用 put_ok() 的例子是

my $t = Test::Mojo->new;
$t->put_ok('this/is/url/to/resource'=>{ "element" => "modified value"})->status_is(204)

我每次都收到错误的请求状态 (400),因此测试失败。我用 Test::Mojo用于测试我的应用程序。

附加信息:

$t->put_ok('http://localhost:3000/application/instances/system/test'=>{"model" => "testing put"})->status_is(204);

这是对PUT的精确测试尝试的请求。
model是资源的属性 test正在尝试更改为 testing put并且预期的状态响应是 204 .

到 Controller 的映射是通过 $r->route('/application/instances/system/:id, id => qr/[A-Za-z0-9 ]+/ -> via('put')
->to(controller => 'system', action => 'update_sys');

这条路线调用了update_sys system 中的方法 Controller ,这就是资源的定位方式。

最佳答案

实际上,在 IRC 上与 SRI 讨论后,他向我指出了一个几乎与您在 documentation 中的需求相同的示例.

# Test custom transaction
my $tx = $t->ua->build_json_tx('/user/99' => {name => 'sri'});
$tx->req->method('PUT');
$t->tx($t->ua->start($tx))
->status_is(200)
->json_is('/message' => 'User has been replaced.');

所以这应该适合你!

后记:

您可能有兴趣知道这次讨论带来了一些进展:Mojolicious 的下一版本(版本 3.66)现在将为此目的提供更清晰的语法,即新的 request_ok。方法。上面的例子可以改写为

my $tx = $t->ua->build_json_tx('/user/99' => {name => 'sri'});
$tx->req->method('PUT');
$t->request_ok($tx)
->status_is(200)
->json_is('/message' => 'User has been replaced.');

关于perl - 在 mojolicious 中测试 JSON PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com