前提
Everyday Rails - RSpecによるRailsテスト入門を読んでいて疑問点があります
letに関する遅延評価の部分で理解できない部分があります
発生している問題・エラーメッセージ
let(:blog) { Blog.create(title: 'RSpec必勝法', content: 'あとで書く') } it '正しく検索できること' do expect(Blog.search("RSpec")).to include(blog) end it 'ブログの取得ができること' do expect(Blog.first).to eq blog end
上記テストに関して
「正しく検索できること」はテストがパスするのに対して
「ブログの取得ができること」はテストがパスしないのが納得できません
letが遅延評価なのであればBlog.search("RSpec")
を実行したタイミングではBlog.create
は実行されていないのでBlog.search
の戻り値は空の配列であり
テストはパスしないのが正しいのではないかと考えています
補足情報
search
メソッドは書籍の中で定義されているものと同様のものを用いています
0 コメント