NAME
Test::BDD::Cucumber::Executor - Run through Feature and Harness objects
VERSION
version 0.86
DESCRIPTION
The Executor runs through Features, matching up the Step Lines with Step Definitions, and reporting on progress through the passed-in harness.
ATTRIBUTES
matching
The value of this attribute should be one of first
(default), relaxed
and strict
.
By default (first
), the first matching step is executed immediately, terminating the search for (further) matching steps. When matching
is set to anything other than first
, all steps are checked for matches. When set to relaxed
, a warning will be generated on multiple matches. When set to strict
, an exception will be thrown.
METHODS
extensions
add_extensions
The attributes extensions
is an arrayref of Test::BDD::Cucumber::Extension extensions. Extensions have their hook-functions called by the Executor at specific points in the BDD feature execution.
<add_extensions
adds items in FIFO using unshift()>, and are called in reverse order at the end hook; this means that if you:
add_extensions( 1 );
add_extensions( 2, 3 );
The pre_*
will be called in order 2, 3, 1, and post_*
will be called in 1, 3, 2.
steps
add_steps
The attributes steps
is a hashref of arrayrefs, storing steps by their Verb. add_steps()
takes step definitions of the item list form:
(
[ Given => qr//, sub {} ],
),
Or, when metadata is specified with the step, of the form:
(
[ Given => qr//, { meta => $data }, sub {} ]
),
(where the hashref stores step metadata) and populates steps
with them.
execute
Execute accepts a feature object, a harness object, and an optional Cucumber::TagExpressions::ExpressionNode object and for each scenario in the feature which meets the tag requirements (or all of them, if you haven't specified one), runs execute_scenario
.
execute_outline
Accepts a hashref of options and executes each scenario definition in the scenario outline, or, lacking an outline, executes the single defined scenario.
Options:
feature
- A Test::BDD::Cucumber::Model::Feature object
feature_stash
- A hashref that should live the lifetime of feature execution
harness
- A Test::BDD::Cucumber::Harness subclass object
outline
- A Test::BDD::Cucumber::Model::Scenario object
background
- An optional Test::BDD::Cucumber::Model::Scenario object representing the Background
execute_scenario
Accepts a hashref of options, and executes each step in a scenario. Options:
feature
- A Test::BDD::Cucumber::Model::Feature object
feature_stash
- A hashref that should live the lifetime of feature execution
harness
- A Test::BDD::Cucumber::Harness subclass object
scenario
- A Test::BDD::Cucumber::Model::Scenario object
background_obj
- An optional Test::BDD::Cucumber::Model::Scenario object representing the Background
scenario_stash
- A hashref that lives the lifetime of the scenario execution
For each step, a Test::BDD::Cucumber::StepContext object is created, and passed to dispatch()
. Nothing is returned - everything is played back through the Harness interface.
add_placeholders
Accepts a text string and a hashref, and replaces <placeholders
> with the values in the hashref, returning a string.
add_table_placeholders
Accepts a hash with parsed table data and a hashref, and replaces <placeholders
> with the values in the hashref, returning a copy of the parsed table hashref.
find_and_dispatch
Accepts a Test::BDD::Cucumber::StepContext object, and searches through the steps that have been added to the executor object, executing against the first matching one (unless $self-
matching> indicates otherwise).
You can also pass in a boolean 'short-circuit' flag if the Scenario's remaining steps should be skipped, and a boolean flag to denote if it's a redispatched step.
dispatch($context, $stepdef, $short_circuit, $redispatch)
Accepts a Test::BDD::Cucumber::StepContext object, and a reference to a step definition triplet (verb, metadata hashref, coderef) and executes it the coderef.
You can also pass in a boolean 'short-circuit' flag if the Scenario's remaining steps should be skipped.
skip_step
Accepts a step-context, a result-type, and a textual reason, exercises the Harness's step start and step_done methods, and returns a skipped-test result.
AUTHOR
Peter Sergeant pete@clueball.com
LICENSE
Copyright 2019-2023, Erik Huelsmann
Copyright 2011-2019, Peter Sergeant; Licensed under the same terms as Perl