RailsTutorial4.0を高速で復習する。8.3章。
8.3Cucumberの紹介 (オプション)
Cucumberは振舞駆動開発用のツールだそうです。最近はどうなんでしょ?使われているんでしょうか?
テスト本の
おすすめは「The RSpec Book 」(David Chelimsky著)、「 Rails 3 in Action 」(Ryan Bigg、Yehuda Katz著)、 「The Cucumber Book」(Matt Wynne、Aslak Hellesøy著)
だそうです。
8.3.1インストールと設定、です。
Cucumber環境づくり
cucumber-rails gemとdatabase_cleanerをgemに追加する必要がありますが、もう入っていました。
rails generate cucumber:install
これでcucumberに必要な環境ができます。
8.3.2フィーチャーとステップ、です。
Cucumberでは、Gherkin (キュウリ属の植物: ガーキン) と呼ばれるテキストベースの言語を使用して、アプリケーションに期待される振る舞いを記述します。
聞いた事がなかったです。
サインインのテストをCucumberで書いてみる
リスト8.32 ユーザーのサインインをテストするCucumberのフィーチャーファイル。
features/signing_in.feature
Feature: Signing in Scenario: Unsuccessful signin Given a user visits the signin page When he submits invalid signin information Then he should see an error message Scenario: Successful signin Given a user visits the signin page And the user has an account When the user submits valid signin information Then he should see his profile page And he should see a signout link
リスト8.33 サインインフィーチャーがパスするための完全なステップ定義。
features/step_definitions/authentication_steps.rb
Given /^a user visits the signin page$/ do visit signin_path end When /^he submits invalid signin information$/ do click_button "Sign in" end Then /^he should see an error message$/ do expect(page).to have_selector('div.alert.alert-error') end Given /^the user has an account$/ do @user = User.create(name: "Example User", email: "user@example.com", password: "foobar", password_confirmation: "foobar") end When /^the user submits valid signin information$/ do fill_in "Email", with: @user.email fill_in "Password", with: @user.password click_button "Sign in" end Then /^he should see his profile page$/ do expect(page).to have_title(@user.name) end Then /^he should see a signout link$/ do expect(page).to have_link('Sign out', href: signout_path) end
Cucumberでテストシナリオ書いて、振る舞いはカピバラさんで書くというもののようです。
bundle exec cucumber features/
これでテストはパス。Cucumber見やすいと思いますが、なんだかRSpecのほうがいいかも。
8.3.3対比: RSpecのカスタムマッチャー、です。
これはとばします。
8.4最後に、です。
変更をmasterブランチにマージします。herokuにはpushしません。
8.5演習はとばします。
次は、
第9章 ユーザーの更新・表示・削除
です。
関連記事
-
-
実機なしでRetina 3.5インチのスクリーンショットを撮る
iPhoneアプリ公開時に2種類の画像登録が必要です。 1つ目はアイコン。アプリ …
-
-
RailsTutorial4.0を高速で復習する。7.6章。演習。
7.6演習 1問目です。 リスト7.30のコードを使用して、7.1.4で定義され …
-
-
iPad使用前/使用後、雑感。
5/28にiPadがAppleStoreからクロネコヤマトで届けられました。 週 …
-
-
Rubyの聖地、松江でRailsGirls Matsueに参加しました
旧暦神在月にRubyイベントに参加したい!と思ったところ、狙ったようにRubyW …
-
-
もうあかん!Mac OSXのスクロールを逆にする
OSXのいつのバージョンからだっけ? スクロールの向きが突如逆になったんですよね …
-
-
RailsTutorial4.0を高速で復習する。6.2.4章。
6.2.4フォーマットを検証する です。 メールアドレスは文字数制限だけじゃだめ …
-
-
WordPressのテンプレートを自分で作ってみました
ブログ更新は久々になりました。この2週間、ずっとこのブログ用にWordPress …
-
-
RailsTutorial4.0を高速で復習する。11.3章。
11.3ステータスフィード、です。 11.3.1動機と計画、です。 仕様 mic …
-
-
ToDoの管理方法
東大生はノートがきれいだとか、、 きれいに書いている暇があったら、頭に書いて覚え …
-
-
Mac初期化。MavericksクリーンインストールUSB作る。
イラレやxcodeはMacBookAirに重すぎる、、そろそろ転売の時機なのかも …