Lime

Website / Source Code / Report Issue / Mailing List

Description

Lime is pure-Ruby Gherkin-style test framework.

Instruction

Lime lets you write features scripts using Ruby, yet still do so with a close approximation to Gherkin domain language.

Feature "Addition" do
  To "avoid silly mistakes"
  As "a math idiot"
  We "need to calculate the sum of numbers"

  Scenario "Add two numbers" do
    Given "I have a calculator"
    Given "I have entered 50 into the calculator"
    Given "I have entered 70 into the calculator"
    When  "I press add"
    Then  "the result should be 120 on the screen"
  end

  Scenario "Add three numbers" do
    Given "I have a calculator"
    Given "I have entered 50 into the calculator"
    Given "I have entered 70 into the calculator"
    Given "I have entered 90 into the calculator"
    When  "I press add"
    Then  "the result should be 2101 on the screen"
  end

  Given 'I have a calculator' do
    require 'calculator'
    @calculator = Calculator.new
  end

  Given 'I have entered (((\d+))) into the calculator' do |n|
    @calculator.push n.to_i
  end

  When 'I press add' do
    @result = @calculator.add
  end

  Then 'the result should be (((\d+))) on the screen' do |n|
    @result.assert == n.to_i
  end
end

The last set of Given and When procedures are called the advice definitions. These can be placed in their own modules and included into the Feature scope like any other module. They simply need to include the Lime::Featurette module to do so. For instance:

module CalculatorAdvice
  include Lime::Featurette

  Given 'I have a calculator' do
    require 'calculator'
    @calculator = Calculator.new
  end

  Given 'I have entered (((\d+))) into the calculator' do |n|
    @calculator.push n.to_i
  end

  When 'I press add' do
    @result = @calculator.add
  end

  Then 'the result should be (((\d+))) on the screen' do |n|
    @result.assert == n.to_i
  end
end

If you add such scripts to a subdirectory called featurettes relative to the feature that uses them, then they will be loaded automatically when features are run.

Speaking of which, to run features use the rubytest command line tool.

$ rubytest -Ilib spec/feature_addition.rb

See RubyTest to learn more.

Copyrights

Copyright (c) 2011 Rubyworks

Lime is distributed according to the terms of the FreeBSD license.

See LICENSE.txt for details.