Open4

RSpecキャッチアップ

miniseraminisera

RSpecのデバック方法
binding.irbを差し込む

require 'rails_helper'
RSpec.describe Book, type: :model do
  describe "Book#title_with_author" do
    it "Book#title_with_authorを呼び出したとき、titleとauthorを結んだ文字列が返ること" do
      book = Book.new(title: "RubyBook", author: "matz")
      binding.irb # ここで実行がとまってirbを利用できる
      expect(book.title_with_author).to eq("RubyBook - matz")
    end
  end
end
miniseraminisera

describeとcontextの使い分け

  • describeはメソッドで区切る
    • describe "Book#title_with_author" do
  • contextは条件で区切る
    • context "Book#titleが文字列のとき" do end
example_test.rb
describe "Book#title_with_author" do # メソッド
  context "Book#titleが文字列のとき" do # 状況を説明する
    it "titleとauthorを結んだ文字列が返ること" do # 結果を説明する
      book = Book.new(title: "RubyBook", author: "matz")
      expect(book.title_with_author).to eq("RubyBook - matz")
    end
  end
  context "Book#titleがnilのとき" do # 状況を説明する
    it "空のtitleとauthorを結んだ文字列が返ること" do # 結果を説明する
      book = Book.new(author: "matz")
      expect(book.title_with_author).to eq(" - matz")
    end
  end
end
miniseraminisera

Railsアプリでよくつかうテストは以下の3種類

  • Model spec: モデルのテスト
  • System spec: ブラウザをつかったE2E(=アプリ全範囲)テスト
  • Request spec: ブラウザをつかわないE2Eテスト

ModelspecとRequest specとについて学びたい。