हम निम्नलिखित सरल Mojolicious नियंत्रक बनाया है:हम एक Mojolicious नियंत्रक का परीक्षण कैसे करते हैं?
package Test::SampleApp::Pages;
# $Id$
use strict;
use warnings;
our $VERSION = '0.01';
use Carp;
use English '-no_match_vars';
use Readonly;
use Test::Mojo;
use Test::Most;
use base 'Test::Class';
Readonly my $SERVER_OK => 200;
sub startup : Tests(startup) {
eval {
require SampleApp;
SampleApp->import;
1;
} or Carp::croak($EVAL_ERROR);
return;
}
sub get_home : Tests(4) {
my $test = shift;
my $mojo = $test->mojo;
$mojo->get_ok('/pages/home')->status_is($SERVER_OK);
$mojo->text_is(
'title',
$test->base_title . ' | Home',
'... and should have the right title'
);
$mojo->content_like(
qr/<body>(?:\s*\S+\s*)+<\/body>/msx,
'... and should have a non-blank body'
);
return;
}
sub get_contact : Tests(3) {
my $test = shift;
my $mojo = $test->mojo;
$mojo->get_ok('/pages/contact')->status_is($SERVER_OK);
$mojo->text_is(
'title',
$test->base_title . ' | Contact',
'... and should have the right title'
);
return;
}
sub get_about : Tests(3) {
my $test = shift;
my $mojo = $test->mojo;
$mojo->get_ok('/pages/about')->status_is($SERVER_OK);
$mojo->text_is(
'title',
$test->base_title . ' | About',
'... and should have the right title'
);
return;
}
sub base_title {
my ($self, $base_title) = @_;
if (defined $base_title) {
$self->{base_title} = $base_title;
}
return $self->{base_title};
}
sub mojo {
my ($self, $mojo) = @_;
if (defined $mojo) {
$self->{mojo} = $mojo;
}
return $self->{mojo};
}
sub setup : Tests(setup) {
my $test = shift;
$test->base_title('Mojolicious Sample App');
$test->mojo(Test::Mojo->new(app => 'SampleApp', max_redirects => 1));
return;
}
1;
हमें करने के लिए, यह अधिक कार्यक्षमता परीक्षण के बजाय इकाई परीक्षण
की तरह है:
package SampleApp::Pages;
# $Id$
use strict;
use warnings;
our $VERSION = '0.01';
use Mojo::Base 'Mojolicious::Controller';
sub home {
my $self = shift;
$self->render('title' => 'Home');
return;
}
sub contact {
my $self = shift;
$self->render('title' => 'Contact');
return;
}
sub about {
my $self = shift;
$self->render('title' => 'About');
return;
}
1;
इसी इकाई परीक्षण कुछ ऐसा नज़र नियंत्रक के home
विधि को कॉल करने का कोई तरीका है और इसके आउटपुट का परीक्षण करें जिसके लिए Test::Mojo
के माध्यम से सर्वर इंस्टेंस प्रारंभ करने की आवश्यकता नहीं है?
मैं 'टेस्ट :: कक्षा' से परिचित नहीं था। इसके लिए नए लोगों के लिए, यह ध्यान देने योग्य है - यह सब मॉड्यूल जैसे 'उप स्टार्टअप: टेस्ट (स्टार्टअप) {...}' को समझने के लिए मॉड्यूल है। – Randall