[](
https://travis-ci.org/tokuhirom/Test-Kantan)
# NAME
Test::Kantan - simple, flexible, fun "Testing framework"
# SYNOPSIS
use Test::Kantan;
describe 'String', sub {
describe 'index', sub {
it 'should return -1 when the value is not matched', sub {
expect(index("abc", 'x'))->to_be(-1);
expect(index("abc", 'a'))->to_be(0);
};
};
};
# DESCRIPTION
Test::Kantan is a behavior-driven development framework for testing Perl 5 code.
It has a clean, obvious syntax so that you can easily write tests.
# CURRENT STATUS
Unstable. I will change the API without notice.
# Interfaces
There is 3 types for describing test cases.
## BDD style
RSpec/Jasmine like BDD style function names are available.
describe 'String', sub {
before_each { ... };
describe 'index', sub {
it 'should return -1 when the value is not matched', sub {
expect(index("abc", 'x'))->to_be(-1);
expect(index("abc", 'a'))->to_be(0);
};
};
};
done_testing;
## Given-When-Then style
There is the Given-When-Then style functions.
It's really useful for describing real complex problems.
Scenario 'String', sub {
setup { ... };
Feature 'Get the index from the code', sub {
Given 'the string';
my $str = 'abc';
When 'get the index for "a"';
my $i = index($str, 'a');
Then 'the return value is 0';
expect($i)->to_be(0);
};
};
done_testing;
## Plain old Test::More style
subtest 'String', sub {
setup { ... };
subtest 'index', sub {
expect(index("abc", 'x'))->to_be(-1);
expect(index("abc", 'a'))->to_be(0);
};
};
done_testing;
# Assertions
Here is 2 type assertions.
## `ok()`
ok { 1 };
There is the `ok` function. It takes one code block. The code returns true value if the test case was passed, false otherwise.
`ok()` returns the value what returned by the code.
## `expect()`
expect($x)->to_be_true;
Here is the `expect` function like RSpec/Jasmine. For more details, please look [Test::Kantan::Expect](
https://metacpan.org/pod/Test::Kantan::Expect).
# Utility functions
## ` diag($message) `
You can show the diagnostic message with ` diag() ` function.
Diagnostic message would not print if whole test cases in the subtest were passed.
It means, you can call diag() without worries about the messages is a obstacle.
# ENVIRONMENT VARIABLES
- KANTAN\_REPORTER
You can specify the reporter class by KANTAN\_REPORTER environment variable.
KANTAN_REPORTER=TAP perl -Ilib t/01_simple.t
- KANTAN\_CUTOFF
Kantan cut the diagnostic message by 80 bytes by default.
If you want to change this value, you can set by KANTAN\_CUTOFF.
KANTAN_CUTOFF=10000 perl -Ilib t/01_simple.t
# Tips
## How do I suppress output from Log::Minimal?
Log::Minimal outputs logs to STDERR by default.
$Log::Minimal::PRINT = sub {
my ( $time, $type, $message, $trace,$raw_message) = @_;
local $Test::Kantan::Level = $Test::Kantan::Level + 3;
Test::Kantan::diag("$time [$type] $message at $trace", 1024);
};
# How do I use the testing library based on Test::Builder?
Test::Kantan replace some methods in Test::Builder.
You can use the library based on Test::Builder with Test::Kantan :)
# 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.
# AUTHOR
Tokuhiro Matsuno <
[email protected]>