The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.

context

It's alias of 'describe' function.

it($name, \&code)

Create new Test::Ika::Example.

it($name, $cond, \&code)

Create new conditional 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 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 <tokuhirom AAJKLFJEF@ GMAIL COM>

SEE ALSO

Test::Spec

Test::Behavior::Spec

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.