下記の本で、テストは外から、つまりフィーチャースペックから作るといいことを知りました。そこでその手順について質問があります。
Everyday Rails… Aaron Sumner 著 et al. [Leanpub PDF/iPad/Kindle]
次のようなフィーチャースペックを作成した場合は、どのような手順で進めるのでしょうか?
ソースコードの下に私が認識している手順を記述します。
ruby
1# spec/features/users_spec.rb 2require 'rails_helper' 3 4feature 'User management' do 5 scenario "adds a new user", js: true do 6 admin = create(:admin) 7 sign_in admin 8 9 visit root_path 10 expect{ 11 click_link 'Users' 12 click_link 'New User' 13 fill_in 'Email', with: 'newuser@example.com' 14 find('#password').fill_in 'Password', with: 'secret123' 15 find('#password_confirmation').fill_in 'Password confirmation', 16 with: 'secret123' 17 click_button 'Create User' 18 }.to change(User, :count).by(1) 19 expect(current_path).to eq users_path 20 expect(page).to have_content 'New user created' 21 within 'h1' do 22 expect(page).to have_content 'Users' 23 end 24 expect(page).to have_content 'newuser@example.com' 25 end 26end
- rails newでプロジェクトの作成
- spec/features/users_spec.rbの作成
- 管理者が新規ユーザーを作成するシナリオを記述する
- rspecでテストを走らせると
admin = create(:admin)
で失敗 - adminファクトリを作成する
ruby
1# spec/factories/users.rb 2require 'faker' 3 4FactoryGirl.define do 5 factory :user do 6 email { Faker::Internet.email } 7 password 'secret' 8 password_confirmation { password } 9 10 factory :admin do 11 admin true 12 end 13 end 14end
- userモデルを作成する
** 疑問**
この時、userモデルのテストを作り、userモデルのバリデートやメソッドを作りこんでいくのでしょうか?それとも、spec/features/users_spec.rb
に戻り、次は未実装のマクロsign_in
を実装して、フィーチャーテストを進めていくのでしょうか?
外からテストを作成していくと、いつモデルやコントローラを作りこんでいくかがわかりません。フィーチャースペックというのがユーザーの正常・異常操作を全て記述するものなら、その都度モデルやコントローラに機能追加をすると思うのですが、どうでしょうか?
それとも先にビュー、モデル、コントローラをある程度用意してから、テストを書き始めるのテスト駆動開発なのでしょうか?違うと思いますが、念のため確認したいです。
ご回答、よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/09/03 13:38 編集
2015/09/05 03:02