Один из моих тестов не прошел из-за некоторых проблем с использованием let!в rspec - PullRequest
0 голосов
/ 18 мая 2018

Понятия не имею, что не так со следующим:

     let!(:account1) { create(:account) }

      describe ".active_between" do
        subject { Account.active_between(Date.today - 10.days, Date.today).to_a }
        it { is_expected.to eq([account1]) }
      end

Каким-то образом этот тест не проходит так:

expected: [#<Account id: 2, lead_id: 2]
     got: [#<Account id: 2, lead_id: 3]

Что может быть причиной проблемы с существующим lead_idизменилось?Нет абсолютно никакого кода, отвечающего за его изменение.

Заводской бот настроен следующим образом:

  factory :account do
    association :lead
  end

Завод по производству лидов определен как:

  factory :lead do
    name 'Lead'
  end

Ответы [ 2 ]

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

К сожалению, здесь недостаточно информации.Сбой, если вы запускаете ТОЛЬКО этот тест?

Если нет, я бы предложил использовать https://github.com/DatabaseCleaner/database_cleaner

, чтобы решить проблему и убедиться, что каждый тест начинается с чистой базы данных.

Если это не поможет, в классах моделей должно быть что-то, что мешает этому.Если у вас возникнут дополнительные проблемы, добавьте также фрагмент из обеих моделей, мы, вероятно, сможем рассказать вам больше, чем

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

Есть ли у вас какие-либо другие тесты, которые меняют account1, и в частности это lead в любом случае?Rspec будет запускать тесты в произвольном порядке, так что это может быть последующим тестом, который его вызывает.

Независимо от этого, такие тесты могут быть несколько ошибочными.Вы действительно хотите сравнить весь объект или только то, что идентификаторы совпадают?Если совпадения ID достаточно, тогда ваш тест в порядке, и вам не нужно беспокоиться о других атрибутах (в частности, о временных метках, которые находятся вне smidgen)

...