Class: Spinach::Runner::ScenarioRunner
- Inherits:
-
Object
- Object
- Spinach::Runner::ScenarioRunner
- Defined in:
- lib/spinach/runner/scenario_runner.rb
Overview
A Scenario Runner handles a particular scenario run.
Instance Method Summary (collapse)
-
- (GherkinRuby::AST::Feature) feature
] The feature containing the scenario..
-
- (ScenarioRunner) initialize(scenario)
constructor
A new instance of ScenarioRunner.
-
- (true, false) run
Runs the scenario, capturing any exception, and running the corresponding hooks.
-
- (Object) run_step(step)
Runs a particular step.
-
- (FeatureSteps) step_definitions
The step definitions for the current feature.
-
- (Array<GherkinRuby::AST::Step>) steps
An array of steps.
Constructor Details
- (ScenarioRunner) initialize(scenario)
A new instance of ScenarioRunner
10 11 12 |
# File 'lib/spinach/runner/scenario_runner.rb', line 10 def initialize(scenario) @scenario = scenario end |
Instance Method Details
- (GherkinRuby::AST::Feature) feature
] The feature containing the scenario.
18 19 20 |
# File 'lib/spinach/runner/scenario_runner.rb', line 18 def feature @scenario.feature end |
- (true, false) run
Runs the scenario, capturing any exception, and running the corresponding hooks.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/spinach/runner/scenario_runner.rb', line 45 def run Spinach.hooks.run_before_scenario @scenario, step_definitions scenario_run = false Spinach.hooks.run_around_scenario @scenario, step_definitions do scenario_run = true step_definitions.before_each steps.each do |step| Spinach.hooks.run_before_step step, step_definitions if @exception Spinach.hooks.run_on_skipped_step step, step_definitions else run_step(step) end Spinach.hooks.run_after_step step, step_definitions end step_definitions.after_each end raise "around_scenario hooks *must* yield" if !scenario_run && !@exception Spinach.hooks.run_after_scenario @scenario, step_definitions !@exception end |
- (Object) run_step(step)
Runs a particular step.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/spinach/runner/scenario_runner.rb', line 75 def run_step(step) step_location = step_definitions.step_location_for(step.name) step_definitions.execute(step) Spinach.hooks.run_on_successful_step step, step_location, step_definitions rescue *Spinach.config[:failure_exceptions] => e @exception = e Spinach.hooks.run_on_failed_step step, @exception, step_location, step_definitions rescue Spinach::StepNotDefinedException => e @exception = e Spinach.hooks.run_on_undefined_step step, @exception, step_definitions rescue Spinach::StepPendingException => e e.step = step Spinach.hooks.run_on_pending_step step, e rescue Exception => e @exception = e Spinach.hooks.run_on_error_step step, @exception, step_location, step_definitions end |
- (FeatureSteps) step_definitions
The step definitions for the current feature.
34 35 36 |
# File 'lib/spinach/runner/scenario_runner.rb', line 34 def step_definitions @step_definitions ||= Spinach.find_step_definitions(feature.name).new end |
- (Array<GherkinRuby::AST::Step>) steps
An array of steps.
26 27 28 |
# File 'lib/spinach/runner/scenario_runner.rb', line 26 def steps feature.background_steps + @scenario.steps end |