そのための小さな Mojo テスト スクリプトを作成しました。使用する
$collection->find->all
イテレータではなく、すべてのページのリストを取得します。テストは次のとおりです。
#!/usr/bin/env perl
use Mojolicious::Lite;
use MongoDB;
# --- MongoDB preparation ---
my $conn = MongoDB::Connection->new; # create a MongoDB connection
my $test_db = $conn->test; # a MongoDB database
my $tests = $test_db->tests; # a test collection
# insert test objects
$tests->remove();
$tests->insert({name => 'foo', age => 42});
$tests->insert({name => 'bar', age => 17});
# --- Mojolicious::Lite web app ---
# access the tests collection in a mojoy way
helper mongo_tests => sub {$tests};
# list all tests as JSON
get '/' => sub {
my $self = shift;
$self->render(json => [$self->mongo_tests->find->all]);
};
# --- web app test ---
use Test::More tests => 6;
use Test::Mojo;
my $tester = Test::Mojo->new;
$tester->get_ok('/')->status_is(200);
my $json = $tester->tx->res->json;
is $json->[0]{name}, 'foo', 'right name';
is $json->[0]{age}, 42, 'right age';
is $json->[1]{name}, 'bar', 'right name';
is $json->[1]{age}, 17, 'right age';
出力:
1..6
ok 1 - get /
ok 2 - 200 OK
ok 3 - right name
ok 4 - right age
ok 5 - right name
ok 6 - right age
注: MongoDB は OID を追加するためis_deeply
、データ構造のテストには使用できませんでした。$json
ダンプすると表示されます$json
。