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

NAME

Test::BDD::Cucumber::Manual::Architecture - Structural Overview

VERSION

version 0.56

INTRODUCTION

This short document exists to give you an idea how the different components of this distribution fit together.

MODELS

The core of a Cucumber-based test suite are the feature files and the step definitions files. By convention, these are saved under /features/ and /features/step_definitions/ respectively.

The feature files are encapsulated by the classes in Test::BDD::Cucumber::Model.

                  one to one
 TBCM::Feature<----------------->TBCM::Document
      |                               |
      +-------------------+           |
      | has many          | has a     | has many
      V                   |           V
 TBCM::Scenario           +----->TBCM::Line
      |                            ^  ^
      +----------------------------+  |
      | has many                      |
      V                               |
 TBCM::Step---------------------------+

EXECUTOR

We build up a Test::BDD::Cucumber::Executor object, in to which we load the step definitions. We then pass this in a Test::BDD::Cucumber::Model::Feature object, along with a Test::BDD::Cucumber::Model::Harness object, which controls interaction with the outside world.

EXTENSION

Extensions allow hooking into the execution of the steps, with pre- and post hooks for steps, scenarios, features and the entire execution. Extensions can provide additional step directories from which steps will be made available. The feature and scenario stashes are passed to the extension hooks allowing for a means of communication between the hooks and the steps.

Extensions - when loaded by the pherkin test executor - receive their configuration from the pherkin.yaml configuration file, which works similar to the configuration of extensions in Behat.

Note: when using extensions in combination with the TAP::Parser::SourceHandler::Feature plugin for prove, there is no guarantee that the pre_execute and post_execute hooks execute exactly once or even execute at all. This is a current limitation to be lifted in a future release.

AUTHOR

Peter Sergeant pete@clueball.com

LICENSE

Copyright 2011-2016, Peter Sergeant; Licensed under the same terms as Perl