テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

Cucumberではじめるエンドツーエンドのテスト

Cucumberのインストール方法とテスト実行までのメモです。

インストール

Gemfile に以下を追記して、インストールします。

gem 'rspec-rails'
gem 'cucumber-rails', require: false
gem 'database_cleaner'
$ bundle install

次に、Cucumberのファイルを生成します。

$ bundle exec rails generate cucumber:install

以下のようなファイルが作成されます。

      create  config/cucumber.yml
      create  script/cucumber
       chmod  script/cucumber
      create  features/step_definitions
      create  features/step_definitions/.gitkeep
      create  features/support
      create  features/support/env.rb
       exist  lib/tasks
      create  lib/tasks/cucumber.rake

テストを書く

テストはFeatureファイルとStepファイルの2種類のファイルに書きます。

Featureファイルの作成

Featureファイルにはテストのシナリオを自然言語(日本語や英語)で書きます。

ファイル名は features/user.feature のようにします。

# language: ja

機能: ユーザ登録する

シナリオ: 新規登録する
    * 新規登録のリンクをクリックする
    * 新規登録画面を表示する

機能は1つのファイルに必ず1つ必要です。

Stepファイルの作成

Stepファイルはシナリオで定義されたステップをRubyで書きます。

ファイル名は features/step_definitions/user_steps.rb のようにします。

When (/^新規登録のリンクをクリックする$/) do
    visit '/'
    click_link '新規登録'
end

Then (/^新規登録画面を表示する$/) do
    sign_up_url = Capybara.default_host + '/users/sign_up'
    expect(current_url).to eq(sign_up_url)
end

テスト実行

bundle exec cucumber features