Model.all не работает после того, как я использую create (: model) в спецификациях - PullRequest
0 голосов
/ 22 мая 2018

В моей спецификации у меня есть:

  describe 'GET #show' do
    let(:user) { create(:user) }

    it 'returns HTTP OK response with expected body' do
      puts User.all
    end
  end

User.all - ноль.Как заставить его вернуть созданный пользовательский объект?

1 Ответ

0 голосов
/ 22 мая 2018

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...