# 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.