Search code examples
cucumber

Optional parameter in cucumber


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"|

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