Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | cucumberの進化系、turnip。キュウリの次はカブ

概要

cucumberの進化系、turnip。キュウリの次はカブ

詳細

turnipはcucumberをより使いやすくするための工夫がなされています

インストール
gem install turnip

サンプル

プレースホルダーからの値の取得が正規表現から
:XXXX というテンプレート方式になっています。

構成
│  .rspec
│
├─lib
│      monster.rb
│
└─spec
    │  spec_helper.rb
    │
    ├─features
    │      attack_monster.feature
    │
    └─steps
            monster_steps.rb
.rspec
-r turnip/rspec
monster.rb
class Monster
  attr_accessor:name
  def initialize(name)
    @name = name
  end

  def attacked
    @die = true
  end

  def die?
    @die 
  end
end

spec_helper.rb

require 'rubygems'
require 'bundler/setup'

Dir.glob("spec/steps/**/*steps.rb") { |f| load f, true }
attack_monster.feature
# spec/features/attack_monster.feature
Feature: Attacking a monster
  Background:
   Given there is a monster called "hoge"

  Scenario: attack the monster
    When I attack it
    Then it should die
monster_steps.rb
# encoding: utf-8
require 'monster'
step "there is a monster called :name" do |name|
  @monster = Monster.new(name)
end

step "I attack it" do
  @monster.attacked
end

step "it should die" do
  expect(@monster.die?).to eq(true)
end
出力
$rspec ./spec/features/attack_monster.feature
.

Finished in 0.004 seconds
1 example, 0 failures