【RSpec】beforeとは【rails】
今回はRSpecの中で使われるbeforeについてサクッとまとめます。
beforeの使い方
beforeは英語で前という意味がありますね。
そうです。describeやcontextを検証していく「前に」処理してくれるものです。
たとえば次のようなテストを見てみましょう。
describe 'タスク管理', type: :system do describe '一覧表示' do context 'ユーザーAがログインしているとき' it 'ユーザーAが作成したタスクが表示される' do expect(page).to have_content 'タスク1' end end end end
「ユーザーAがログインしている」を状態は、「it 'ユーザーAが作成したタスクが表示される' do」を検証する前に処理する必要がありますよね。 なので、ここではit〜doよりもひとつ上の階層でbeforeを使って検証します。
describe 'タスク管理', type: :system do describe '一覧表示' do context 'ユーザーAがログインしているとき' before do visit login_path fill_in 'メールアドレス', with: 'user_a@example.com' fill_in 'パスワード', with: 'password' click_button 'ログイン' end it 'ユーザーAが作成したタスクが表示される' do expect(page).to have_content 'タスク1' end end end end
今はcontext 'ユーザーAがログインしているとき'の下にbeforeを書きましたが、全く同じ処理を別のcontext内でも使うような時には、ひとつ上のdescribe階層でbeforeを書けば、複数のcontextで同じ処理を共通化することもできちゃいます( ^ω^ )
done!