letとlet!の違い
テストが見やすくなってる気がするので自分はletよくつかいます。
違い
目的は同じくメモ化で、違いはタイミングだけっぽい。
何が違うのかと言うと
letは引数のシンボル名が呼ばれるまでは評価されない。
let!だと、beforeが始める前に評価される。
普通に使うのであればletで足りるけど次のようなケースだとlet!したくなるはず。
describe UserController do describe "GET index" do let!(:user) { FactoryGirl.create(:user) } before { get :index } it { expect(user).to eq(User.all) end end
みたいな感じでindexアクションを実行する前にuserレコードを作成したい時に使う感じだと思う。