-
Notifications
You must be signed in to change notification settings - Fork 0
Step Definitions
A Step Definition is the Ruby counterpart of a plain text step. They consist of a Regexp and a Proc and are defined by calling one of the adjective / adverb methods. This happens before Cucumber starts to execute the plain text.
When Cucumber executes the plain text, it will for each step look for a registered Step Definition with a matching Regexp. If it finds one it will execute its Proc, passing all groups from the Regexp match as arguments to the Proc.
The adjective/adverb has no significance when Cucumber is registering or looking for Step Definitions.
When Cucumber can’t find a matching Step Definition the step gets marked as yellow, and all subsequent steps in the scenario are skipped.
When a Step Definition’s Proc is executed and raises an error, the step is marked as red.
Steps that follow pending or failed steps are never executed (even if there is a matching Step Definition), and are marked cyan.
Consider these step definitions:
Given /Three (.*) mice/ do |disability|
end
Given /Three blind (.*)/ do |animal|
end
And a plain text step:
Given Three blind miceCucumber can’t make a decision about what Step Definition to execute, and wil raise an error telling you to fix the ambiguity.
In Cucumber you’re not allowed to use a regexp more than once in a Step Definition (even across files, even with different code inside the Proc), so the following would cause an error:
Given /Three (.*) mice/ do |disability|
# some code
end
Given /Three (.*) mice/ do |disability|
# some other code
end