違いというか使い分け方がわからない (追記アリ) letは使われたタイミングで処理される。let!は毎回処理をされる。 てっきり、letは一回初期化されたら使いまわされるんだと思っていたけど、呼び出されたときは毎回初期化するようだ。 describe 'let_test' do let(:sample_1){ puts "****let****"; 'sample1'} let!(:sample_2){ puts "****let!****"; 'sample2'} before do puts "before---" end after do puts "after----" end it { sample_1.should eq 'sample1'} it { sample_1.should eq 'sample1'} it { sample_2.should eq 'sample2'
![letとlet!の違いがわからない - すがブロ](https://cdn-ak-scissors.b.st-hatena.com/image/square/e86b54b8e3258bf4d24114daf6ba88fd2ff95dbf/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F51-3T735zLL.jpg)