Rspec получает "уровень стека слишком глубоко" от ассоциаций - PullRequest
1 голос
/ 04 ноября 2011

Для проверки контроллера, в верхней части спецификации я определяю модели:

  let(:user) { Factory(:user, :company => company) }
  let(:facility) { Factory(:facility, :company => company) }
  let(:company) { Factory(:company, :facilities => [facility]) }

И сделать основной индекс спецификации:

  context "responding to GET index" do
    it "should expose all facilities as @facilities" do
      user.company.should_receive(:facilities).and_return([facility])
      get :index
      assigns[:facilities].should == [facility]
    end
  end

Но я получаю эту ошибку:

should expose all facilities as @facilities
stack level too deep
/Users/dmix/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.6.4/lib/rspec/core/let.rb:90
88      module InstanceMethods
89        def __memoized # :nodoc:
90          @__memoized ||= {}
91        end
92      end

Проблема, похоже, связана с 3 фабриками одновременно.

Если я удаляю: средства из определения фабрики компании, ошибка стека уходит:

let(:company) { Factory(:company) }

Как мне изготовить три модели, которые все ссылаются друг на друга, не получая переполнение стека?

1 Ответ

2 голосов
/ 04 ноября 2011

Проблема в том, что ваши facility и company объекты ссылаются друг на друга. Я думаю, что :facilities => [facility] часть вашей company фабрики может оказаться ненужной, поскольку вы уже определяете компанию facility объекта как company. Попробуйте это:

let(:facility) { Factory(:facility, :company => company) }
let(:company) { Factory(:company) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...