Test::Mojo(3p)        User Contributed Perl Documentation       Test::Mojo(3p)



NAME
       Test::Mojo - Testing Mojo!

SYNOPSIS
         use Test::More tests => 10;
         use Test::Mojo;

         my $t = Test::Mojo->new(app => 'MyApp');

         $t->get_ok('/welcome')
           ->status_is(200)
           ->content_like(qr/Hello!/, 'welcome message!');

         $t->post_form_ok('/search', {title => 'Perl', author => 'taro'})
           ->status_is(200)
           ->content_like(qr/Perl.+taro/);

         $t->delete_ok('/something')
           ->status_is(200)
           ->header_is('X-Powered-By' => 'Mojolicious (Perl)')
           ->content_is('Hello world!');

DESCRIPTION
       Test::Mojo is a collection of testing helpers for everyone developing
       Mojo and Mojolicious applications.

ATTRIBUTES
       Test::Mojo implements the following attributes.

   "app"
         my $app = $t->app;
         $t      = $t->app(MyApp->new);

       Application to be tested.

   "tx"
         my $tx = $t->tx;
         $t     = $t->tx(Mojo::Transaction::HTTP->new);

       Current transaction, usually a Mojo::Transaction::HTTP object.

   "ua"
         my $ua = $t->ua;
         $t     = $t->ua(Mojo::UserAgent->new);

       User agent used for testing.

   "max_redirects"
         my $max_redirects = $t->max_redirects;
         $t                = $t->max_redirects(3);

       Maximum number of redirects, defaults to 0.

METHODS
       Test::Mojo inherits all methods from Mojo::Base and implements the
       following new ones.

   "content_is"
         $t = $t->content_is('working!');
         $t = $t->content_is('working!', 'right content!');

       Check response content for exact match.

   "content_like"
         $t = $t->content_like(qr/working!/);
         $t = $t->content_like(qr/working!/, 'right content!');

       Check response content for similar match.

   "content_type_is"
         $t = $t->content_type_is('text/html');

       Check response content type for exact match.

   "content_type_like"
         $t = $t->content_type_like(qr/text/);
         $t = $t->content_type_like(qr/text/, 'right content type!');

       Check response content type for similar match.

   "delete_ok"
         $t = $t->delete_ok('/foo');
         $t = $t->delete_ok('/foo', {Connection => 'close'});
         $t = $t->delete_ok('/foo', 'Hi!');
         $t = $t->delete_ok('/foo', {Connection => 'close'}, 'Hi!');

       Perform a "DELETE" request.

   "element_exists"
         $t = $t->element_exists('div.foo[x=y]');
         $t = $t->element_exists('html head title', 'has a title');

       Checks for existence of the CSS3 selectors XML/HTML element with
       Mojo::DOM.

   "get_ok"
         $t = $t->get_ok('/foo');
         $t = $t->get_ok('/foo', {Connection => 'close'});
         $t = $t->get_ok('/foo', 'Hi!');
         $t = $t->get_ok('/foo', {Connection => 'close'}, 'Hi!');

       Perform a "GET" request.

   "head_ok"
         $t = $t->head_ok('/foo');
         $t = $t->head_ok('/foo', {Connection => 'close'});
         $t = $t->head_ok('/foo', 'Hi!');
         $t = $t->head_ok('/foo', {Connection => 'close'}, 'Hi!');

       Perform a "HEAD" request.

   "header_is"
         $t = $t->header_is(Expect => 'fun');

       Check response header for exact match.

   "header_like"
         $t = $t->header_like(Expect => qr/fun/);
         $t = $t->header_like(Expect => qr/fun/, 'right header!');

       Check response header for similar match.

   "json_content_is"
         $t = $t->json_content_is([1, 2, 3]);
         $t = $t->json_content_is([1, 2, 3], 'right content!');

       Check response content for JSON data.

   "post_ok"
         $t = $t->post_ok('/foo');
         $t = $t->post_ok('/foo', {Connection => 'close'});
         $t = $t->post_ok('/foo', 'Hi!');
         $t = $t->post_ok('/foo', {Connection => 'close'}, 'Hi!');
         $t = $t->post_ok('/foo', 'Hi!', 'request worked!');

       Perform a "POST" request.

   "post_form_ok"
         $t = $t->post_form_ok('/foo' => {test => 123});
         $t = $t->post_form_ok('/foo' => 'UTF-8' => {test => 123});
         $t = $t->post_form_ok('/foo', {test => 123}, {Connection => 'close'});
         $t = $t->post_form_ok(
           '/foo', 'UTF-8',
           {test => 123},
           {Connection => 'close'}
         );
         $t = $t->post_form_ok('/foo', {test => 123}, 'Hi!');
         $t = $t->post_form_ok('/foo', 'UTF-8', {test => 123}, 'Hi!');
         $t = $t->post_form_ok(
           '/foo',
           {test   => 123},
           {Connection => 'close'},
           'Hi!'
         );
         $t = $t->post_form_ok(
           '/foo',
           'UTF-8',
           {test   => 123},
           {Connection => 'close'},
           'Hi!'
         );

       Submit a "POST" form.

   "put_ok"
         $t = $t->put_ok('/foo');
         $t = $t->put_ok('/foo', {Connection => 'close'});
         $t = $t->put_ok('/foo', 'Hi!');
         $t = $t->put_ok('/foo', {Connection => 'close'}, 'Hi!');

       Perform a "PUT" request.

   "reset_session"
         $t = $t->reset_session;

       Reset user agent session.

   "status_is"
         $t = $t->status_is(200);

       Check response status for exact match.

   "text_is"
         $t = $t->text_is('div.foo[x=y]' => 'Hello!');
         $t = $t->text_is('html head title' => 'Hello!', 'right title');

       Checks text content of the CSS3 selectors XML/HTML element for exact
       match with Mojo::DOM.

   "text_like"
         $t = $t->text_like('div.foo[x=y]' => qr/Hello/);
         $t = $t->text_like('html head title' => qr/Hello/, 'right title');

       Checks text content of the CSS3 selectors XML/HTML element for similar
       match with Mojo::DOM.

SEE ALSO
       Mojolicious, Mojolicious::Guides, <http://mojolicio.us>.



perl v5.12.2                      2011-03-16                    Test::Mojo(3p)
