RSpecテストにおけるletの遅延評価について

前提

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 コメント