【问题标题】:What's the easiest way to test a Catalyst REST API测试 Catalyst REST API 的最简单方法是什么
【发布时间】:2012-01-08 11:24:36
【问题描述】:

我正在使用 Catalyst::Controller::REST 构建一个 RESTful Web 服务。通常对于网络测试我使用Test::WWW::Mechanize,但这似乎更适合“GET/POST HTML RPC”测试。是否有任何测试模块可以使用基本身份验证、使用 GET/POST/PUT/DELETE 等和 JSON 轻松测试 HTTP?也许可以与 Catalyst/PSGI 很好地集成,因此我不必启动网络服务器?

【问题讨论】:

    标签: json perl http testing catalyst


    【解决方案1】:

    Catalyst::Test 是 LWP::UserAgent 的子类。下面应该给你正确的想法:

    #!/usr/bin/env perl
    use warnings;
    use strict;
    
    use Test::More;
    use Catalyst::Test 'MyApp';
    use HTTP::Request::Common;
    use JSON::Any; # or whatever json module you usually use
    my $data = 'some_json_data_here';
    my $res = request(
        POST '/some_path',
        Content_Type => 'text/xml',
        Content => $data,
    );
    
    my $content = json_decode($res->content); # or whatever, can't remember the interface.
    my $expected = "some_data";
    is_deeply ( $content, $expected); 
    

    【讨论】:

    • 那行得通,但我希望有一些东西可以为我完成所有的序列化/反序列化,而无需编写所有 JSON/HTTP 代码,例如便利方法。
    【解决方案2】:

    或者用更现代的说法:

      my $data = '{"username":"xyz","password":"xyz"}';
      my $res = request
        (
         POST '/bar/thing',
         Content_Type => 'application/json',
         Content => $data,
        );
    

    ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 2011-03-22
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      相关资源
      最近更新 更多