Testing a Sample Cucumber Feature Using Ruby

There are a few examples I have found online, but it took quite a while for me to get all the information I needed to actually make this work. So here is everything that I was able to find to get Cucumber up and running.

Start by creating a new folder for the project. Doesn’t really matter where you put this folder, but try keep things organised. Create a new folder called features and inside make a “sample”.feature file that contains the feature which is just a simple description

Here is the most common sample that has been floating around the web.


#encoding: utf-8
Feature: Cucumber scenario to chop a cucumber into halves
I have a cucumber that is Xcm long that i want to cut in half
I should have 2 cucumbers after i have cut the cucumber in half
Each piece should be 15cm long to make equal halves

Scenario: Cutting vegetables
Given a cucumber that is 30 cm long
When I cut it in halves
Then I have two cucumbers
And both are 15 cm long

So the first thing you can do is attempt to run this file. You should get back errors, but at least you now know that everything is set-up and working correctly.

Cucumber sample.feature

This will give back 4 errors because the steps for this have not been implemented yet. Copy and paste the suggested empty stubs that cucumber returns and paste them into a .rb file. If you are using a standard windows command shell, you can right click on the window and click “mark”. This allows you to highlight text in the command shell window. This file needs to be put inside a folder called step_definitions. eg. myproject/features/step_definitions/steps.rb

Given(/^a cucumber that is (\d+) cm long$/) do |arg1|
pending # express the regexp above with the code you wish you had

When(/^I cut it in halves$/) do
pending # express the regexp above with the code you wish you had

Then(/^I have two cucumbers$/) do
pending # express the regexp above with the code you wish you had

Then(/^both are (\d+) cm long$/) do |arg1|
pending # express the regexp above with the code you wish you had

Rerun the same feature and the result will be different. It should give an error for the first step telling you there has been no code implemented and then it will skip the rest of the tests.

Go back to the steps.rb file and now you can add some ruby code to the stubs that will successfully do what was described in the above scenario. Once this code has been added all of the codes will pass and uoi will be looking at a nice screen of green.


Given /^a cucumber that is (\d+) cm long$/ do |length|
@cucumber = {:color => 'green', :length => length.to_i}

When /^I (?:cut|chop) (?:it|the cucumber) in (?:halves|half|two)$/ do
@choppedCucumbers = [
{:color => @cucumber[:color], :length => @cucumber[:length] / 2},
{:color => @cucumber[:color], :length => @cucumber[:length] / 2}

Then (/^I have two cucumbers$/) do
@choppedCucumbers.length == 2

Then /^both are (\d+) cm long$/ do |length|
@choppedCucumbers.each do |cuke|
cuke[:length] == length.to_i

Related Articles

Related Questions

Function Keys Reversing Between Fn Actions And Normal

My keyboard has the usual F1 to F12 keys along the top. I use these for shortcuts in various applications. These keys also have...

Whirlpool Oven F6E6: Appliance Manager 1 Board Communication

I have a brand new Whirlpool oven W11I OM1 4MS2 H or (859991549450). I bought it alongside the microwave combi oven. I have had...

Whats the difference between the Tapo P100 and the P105?

There are a few different Tapo smart plugs. The P100 and P110 differ based on the smart power monitoring feature but where does the...


Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Latest Tools

Memory Converter

Converting values between various metric measurements is usually quite simple as there will be 1000 of the smaller unit in the next larger unit....

Bitrate Converter

Below you will find a bitrate converter. This tool will allow you to enter a bitrate value, in one of many different formats and...

Aesthetic Text Generator

There are various ways to make your social media profile seem more unique, some of which are not as easy to implement as others....

Aspect Ratio Calculator For Images

Aspect ratio is the ratio between the height and width of an image. If you want to resize an image by 100 pixels, you...

Add Text To Image

Use this free tool to add text to an image. Simply select the image file that you want to overlay text onto and you...

JavaScript Multi-line String Builder

Javascript did not always support multi-line strings. If you attempted to create a string variable using quotes, putting a line break into the source...

Latest Posts

Latest Questions