How Cucumber works: Gherkin• Gherkin is the language that Cucumber understands.• It is a Business Readable, Domain Specific Language that lets you describe software’s behaviour without detailing how that behaviour is implemented.• So everyone can write Gherkin.• Gherkin serves two purposes – documentation and automated tests. The third is a bonus feature – when it yells in red it’s talking to you, telling you what code you should write.
Gherkin Example1: Feature: Some terse yet descriptive text of what is desired2: In order to realize a named business value3: As an explicit system actor4: I want to gain some beneficial outcome which furthers the goal5:6: Scenario: Some determinable business situation7: Given some precondition8: And some other precondition9: When some action by the actor10: And some other action11: And yet another action12: Then some testable outcome is achieved13: And something else we can check happens too14:15: Scenario: A different situation16: ...
How Cucumber works: Backgrounder• Language: Ruby, etc.Gherkin:Scenario: Users can enter an invoice item . . . Then I enter a product quantity of 5Step definition:When /enter a product quantity of (d+)/ do |quantity| pending "TODO: Do we need to have a product code passed as well?"End
How Cucumber works: Capybara• Capybara helps you test Rails and Rack applications by simulating how a real user would interact with your app.• It is agnostic about the driver running your tests and comes with Rack::Test and Selenium support built in.
Capybara ExampleWhen /^I sign in$/ do within("#session") do fill_in Login’, with => firstname.lastname@example.org fill_in Password’, with => password end click_link Sign inend
Write your first cucumber test caseIt’s really, really recommended that you write your features by hand – in collaborationwith your customer / business analyst / domain expert / interaction designer.However, to get you started you can use the feature generator to generate the firstfew features:$ script/generate feature Frooble name:string color:string description:textexists features/step_definitionscreate features/manage_froobles.feature #gherkin, user storiescreate features/step_definitions/frooble_steps.rb #ruby, step definitions
How to use Cucumber?1. Describe behaviour in plain text2. Write a step definition in Ruby3. Run and watch it fail4. Write code to make the step pass5. Run again and see the step pass6. Repeat 2-5 until green like a cuke7. Repeat 1-6 until the money runs out