Today I had an interesting problem with Cucumber the step “I sign in” was being called when my feature file had “When I sign in to the ….”.
The step looked like this:
When /I sign in/ do
visit “/signin”
…
end
Turns out, this is actually acceptance – and nice behaviour! The reason is because the regex doesn’t state start end characters, as such it would make to any step with the text “I sign in”
Why is it nice? Well I also had two step definitions called
Given I do something
And I do something again
Both did exactly the same thing, but to make the feature more readable I added the again word. Sadly the implementation looked something like this with the step being duplicated.
Given /^do something again$/ do
Given ‘do something’
end
With the trick above, I could simply have the step below which would be called with and without the again word.
Given /^do something/ do
# Work goes here.
end
Simple, but effective.