# NAME Test::Ika - Yet another BDD testing library(Development Release) # SYNOPSIS use Test::Ika; describe 'MessageFilter' => sub { my $filter; before_each { $filter = MessageFilter->new(); }; it 'should detect message with profanity word' => sub { ok $filter->detect('foo'); }; it 'should not detect message without profanity word' => sub { ok ! $filter->detect('bar'); }; }; runtests; # DESCRIPTION Test::Ika is yet another BDD framework for Perl5. This module provides pretty output for testing. __THIS IS A DEVELOPMENT RELEASE. API MAY CHANGE WITHOUT NOTICE__. # FAQ - Ika? This module is dedicated to ikasam\_a, a famous Japanese testing engineer. - Why another one? This module focused to pretty output. Another modules doesn't provide this feature. - Where is 'should'? I think the keyword 'should' is not a core feature of BDD. # Reporters Test::Ika provides some reporters. - The spec mode(default)
- TAP output(it's enabled under $ENV{HARNESS\_ACTIVE} is true)
# FUNCTIONS - `describe($name, $code)` Create new [Test::Ika::ExampleGroup](https://metacpan.org/pod/Test::Ika::ExampleGroup). - context It's alias of 'describe' function. - `it($name, \&code)` Create new [Test::Ika::Example](https://metacpan.org/pod/Test::Ika::Example). - `it($name, $cond, \&code)` Create new conditional [Test::Ika::Example](https://metacpan.org/pod/Test::Ika::Example). `$cond` is usually a sub-routine reference. You can set it with "when" statement. # run this example, if C<$ENV{TEST_MESSAGE}> returns true my $cond = sub { $ENV{TEST_MESSAGE} }; it 'should detect message', $cond => sub { my $filter = MessageFilter->new('foo'); ok $filter->detect('hello foo'); }; - `when(\&code)` Specify conditional sub-routine. You can write conditional example as shown below: it 'should detect message', when { $ENV{TEST_MESSAGE} } => sub { my $filter = MessageFilter->new('foo'); ok $filter->detect('hello foo'); }; - `xit($name, \&code)` - `xit($name, $cond, \&code)` Create new [Test::Ika::Example](https://metacpan.org/pod/Test::Ika::Example) which marked "disabled". - `before_suite(\&code)` Register hook for before running suite. - `before_all(\&code)` Register hook for before running example group. - `before_each(\&code)` Register hook for before running each examples. This block can receive example and example group. before_each { my ($example, $group) = @_; # ... }; - `after_suite(\&code)` Register hook for after running suite. - `after_all(\&code)` Register hook for after running example group. - `after_each(\&code)` Register hook for after running each examples. This block can receive example and example group. after_each { my ($example, $group) = @_; # ... }; - `runtests()` Do run test cases immediately. Normally, you don't call this method expressly. Test::Ika runs test cases on END { } phase. # CLASS METHODS - `Test::Ika->reporter()` Get a reporter instance. - `Test::Ika->set_reporter($module)` Load a reporter class. # AUTHOR Tokuhiro Matsuno # SEE ALSO [Test::Spec](https://metacpan.org/pod/Test::Spec) [Test::Behavior::Spec](https://metacpan.org/pod/Test::Behavior::Spec) [Test::More::Behaviours](https://metacpan.org/pod/Test::More::Behaviours) # LICENSE Copyright (C) Tokuhiro Matsuno This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.