RSpecs let
оценивается лениво.Таким образом, запись фактически не создается до тех пор, пока вы не вызовете user
:
describe 'GET #show' do
let(:user) { create(:user) }
it 'returns HTTP OK response with expected body' do
user
puts User.all
end
end
let
, на самом деле не объявляет переменную.Скорее он создает метод через метапрограммирование, которое запоминает его значение.
RSpec также предоставляет метод let!
, который оценивается сразу:
describe 'GET #show' do
let!(:user) { create(:user) }
it 'returns HTTP OK response with expected body' do
puts User.all
end
end