Optional parameter in cucumber

cucumber

Solution

`optional.feature`:

Feature: Optional parameter

  Scenario: Use optional parameter
    When I check the favorite color count
    When I check the favorite color count for email address 'john@anywhere.example'

`optional_steps.rb`

When /^I check the favorite color count(?: for email address (.*))?$/ do |email|
  email ||= "default@domain.example"
  puts 'using ' + email
end

output

Feature: Optional parameter

  Scenario: Use optional parameter
    When I check the favorite color count
      using default@domain.example
    When I check the favorite color count for email address 'john@anywhere.example'
      using 'john@anywhere.example'

1 scenario (1 passed)
2 steps (2 passed)
0m0.047s

Problem

I have a step definition in which I'd like to have an optional parameter. I believe an example of two calls to this step explains better than anything else what I'm after. ``` I check the favorite color count I check the favorite color count for email address 'john@anywhere.example' ``` In the first instance, I would like to use a default email address. What's a good way of defining this step? I'm no regexp guru. I tried doing this but cucumber gave me an error regarding regexp argument mismatches: ``` Then(/^I check the favorite color count (for email address "([^"]*))*"$/) do |email = "default_email@somewhere.example"| ```

Original source