はじめに
RSpecのfeatureのテストします。
featureのテストとはぽちぽち手動でやるテストをプログラムで自動でやるって感じです
何か文字列を投稿する時を例に説明すると以下のような手順になります。
- 投稿できるページにアクセスする
2. 入力フォームに入力する
3. 投稿ボタンをクリックする
4. リダイレクト先を確認する
実装時に手動でテストを行うとこんな感じでテストを進めると思います
この操作をRSpecを使うと自動でテストできます。
では実際にやっていきましょう!!
テストコード
今回はRSpecの公式ページのコード(ちょっと編集済)を使って説明していきたいと思います。
spec/features/widget_management_spec.rb
require "rails_helper"
RSpec.feature "Widget management", :type => :feature do
scenario "User creates a new widget" do
visit "/widgets/new"
fill_in "name", :with => "My Widget"
click_button "Create Widget"
expect(page).to have_text("Widget was successfully created.")
end
end
scenario- モデル、コントローラーのテストとは違って、
describe、context、itは使用しません。feature、scenarioを使います - (
describe、context) =feature -
it=scenarioだと思って使って行けばだいたいOKです visit "/widgets/new"- URL
/widgets/newにアクセスします fill_in "name", :with => "My Widget"- id名が
nameのフォームにMy Widgetを記入します click_button "Create Widget"-
Create Widgetと表示されているボタンをクリックする expect(page).to have_text("Widget was successfully created.")- リダイレクトした先の
pageにWidget was successfully created.というテキストが含まれているかどうかをテストする
以上が挙動のテストです
気になるところ、疑問などあれば質問、コメントよろしくお願いいたします!!!