NAME
Test::Qcmbr - Cucumber inspired Feature Specification Parser
VERSION
version 0.00_01
SYNOPSIS
use Test::More;
use Test::Qcmbr;
parse_feature_file $filename;
given qr(.*) => sub {
my ($spec, $action, $data, @captured) = @_;
};
when qr(.*) => sub {
ok 1, ...
};
then qr(.*) => sub {
ok 1, ...
};
execute_scenarios && done_testing;
DESCRIPTION
Test::Qcmbr is centered around the parse_specification method which is a homegrown Cucumber-like feature specification parser which takes a string in the form of a Gherkin (cucumber feature specification) and produces a Perl hashref representing that spec.
Input:
my $spec = parse_specification <<'GHERKIN'
# comments are ignored
Feature: Parameter Handling
In order to test getting and setting
As a package using MyApp::Class
I want to check parameter values
Scenario TrueValues: Assigning True Values
Given I am the package MyApp
And I am accessing values using the param method
When I assign the parameter :name a value of :value
Then the parameter hash element :name should match the :result
Example TrueValues:
| name | value | result |
| test | 001 | 001 |
Scenario NullValues: Assigning Null Values
Given I am the package MyApp
And I am accessing values using the param method
When I assign the parameter :name a value of :value
Then the parameter hash element :name (is) :result
Example NullValues:
| name | value | result |
| test | null | defined |
| test | null | exists |
Scenario: Testing FunnyBone
When I set the accessor humor to politics
Then the method funny will return null
GHERKIN
Output:
$spec = {
'name' => 'Parameter Handling',
'description' => [
'In order to test getting and setting',
'As a package using Validation::Class',
'I want to check parameter values'
],
'scenarios' => [
{
'actions' => [
'And I am accessing values using the param method',
'When I assign the parameter :name a value of :value',
'Then the parameter hash element :name should match the :result'
],
'example' => 'TrueValues',
'name' => 'Assigning True Values'
},
{
'actions' => [
'And I am accessing values using the param method',
'When I assign the parameter :name a value of :value',
'Then the parameter hash element :name (is) :result'
],
'example' => 'NullValues',
'name' => 'Assigning Null Values'
},
{
'actions' => [
'When I assign the parameter :name a value of :value',
'Then the parameter hash element :name (is) :result'
],
'example' => undef,
'name' => 'Testing The Mexican'
}
],
'examples' => {
'NullValues' => [
[ 'test', 'null', 'defined' ],
[ 'test', 'null', 'exists' ]
],
'TrueValues' => [
[ 'test', '001', '001' ]
]
}
};
The parse method is responsible for turing a feature spec into a Perl data structure.
AUTHOR
Al Newkirk <awncorp@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by awncorp.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.