はじめに
RSpecのfeatureのテストします。
featureのテストとはぽちぽち手動でやるテストをプログラムで自動でやるって感じです
何か文字列を投稿する時を例に説明すると以下のような手順になります。
1. 投稿できるページにアクセスする
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
にアクセスします
- URL
-
fill_in "name", :with => "My Widget"
- id名が
name
のフォームにMy Widget
を記入します
- id名が
-
click_button "Create Widget"
-
Create Widget
と表示されているボタンをクリックする
-
-
expect(page).to have_text("Widget was successfully created.")
- リダイレクトした先の
page
にWidget was successfully created.
というテキストが含まれているかどうかをテストする
- リダイレクトした先の
以上が挙動のテストです
気になるところ、疑問などあれば質問、コメントよろしくお願いいたします!!!