こんにちは、shinoです。
ぼちぼちプログラミングしながら、生きています。
私は、プログラミングスクールに通い、継続学習を140日続けています。
今回は、RSpecの書き方について書いていきます。
Rspecをまだ、導入していない方は、こちらを参照してください。
こんな方に読んで欲しい
- Rspecをこれから書く方
- Rspecの書き方を知りたい方
- どんな項目を書けるのか知りたい方
Rspecとは
Rspecは、Ruby用のテスティングフレームワークです。
Rspecは、RがRuby,specはテストコードのことです。
Rspecでテストコードを記載しておくと、自動的にテストコードに沿ったバグチェックを行えます。
使い方としては、「Ruby」または、「Rails」と一緒に使います。Rspecだけでは、使えません。
Rspecを導入して、テストを自動化していきましょう!!
ドキュメント
Rspec-Rails
Rspec構成
わかりやすい四則演算を例に取りながら書いていきます。
Rspecの構成は以下のようになります。
- describe(テストのグループ)
- context(describeより小さなグルーブ)
- it(具体的なテストの記載)
- before(itを実装する前にすることがあれば記載)
1 2 3 4 5 6 7 8 |
具体例 Spec.describe ‘四則演算’ do context ‘足算’ do it ‘1+1は2になる’ do expect(1+1).to eq 2 end end end |
それぞれの説明をしていきます。
describeとは
describeは、テストグループの設定をします。
具体例は、四則演算のテストを書くことを宣言します。
describeは、「説明する」「述べる」「描く」などの意味があります。
contextとは
contextは、describeのしたに小さなグループを作ることができます。
具体例では、四則演算の中でも足し算であることを宣言しています。
contextは、「前後関係」「状況」などの意味があります。
itとは
itは、具体的なテストを記載しています。
具体例では、四則演算で「1+1は2になる」ことを確認したいということを宣言しています。
expectとは
expectは、期待するテスト内容を記載します。
具体例では、「1+1」の結果が、2(eq 2)(になることを宣言しています。
四則演算でのより具体的な内容は、以下のようになります。
上のitは、成功しますが、下のitは失敗として表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
Spec.describe ‘四則演算’ do context ‘足し算’ do it ‘1+1は2になる’ do expect(1+1).to eq 2 end end context ‘足し算’ do it ‘1+1は2になる’ do expect(1+1).to eq 2 end end end |
Rspecの具体例
私が、四則演算以外での具体例も書いておきます。
ユーザの認証テストです。gem ‘faker’も使っています。参考にしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
describe 'ユーザの認証テスト'do describe 'ユーザ新規登録'do before do visit new_user_registration_path end context '新規登録画面に移動' do it '新規登録に成功' do fill_in 'user[email]', with: Faker::Internet.email fill_in 'user[password]', with: 'password' fill_in 'user[password_confirmation]', with: 'password' click_button 'Sign up' expect(page).to have_content 'Welcome! You have signed up successfully.' end it '新規登録に失敗' do fill_in 'user[email]',with: '' fill_in 'user[password]',with: '' fill_in 'user[password_confirmation]', with: '' click_button 'Sign up' expect(page).to have_content 'error' end end end end |
まとめ
今回は、rspecの書き方を書いていきました。最初は書くのが大変ですが、導入すればそのあとは、自動でテストできるので、これを基に、rspecをマスターしていきましょう!!
私もどんどん取り入れていきます!!
最後まで、読んでいただきありがとうございます!!
コメント