什么是测试Catalyst REST API的最简单方法?

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

7

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代码,例如方便的方法。 - xenoterracide

1

或者用更现代的说法:

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

;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接