У меня были такие же сбои в одном из моих проектов.
Он использует Ruby 2.0.0-p598, Rails 3.2.21, RSpec 2.99.
Когда я запускаю все спецификации вместе, проблема возникла.
Когда я запускал спецификации по отдельности, они проходили.
В мои spec / spec_helper.rb включено следующее:
RSpec.configure do |config|
# ...
config.include Devise::TestHelpers, type: :controller
# ...
end
Я добавил следующее к первому описанию в каждом ошибочном файле спецификации. Это не решило проблему:
before :each do
sign_out :user
end
Ни один не сделал:
after :each do
sign_out :user
end
Вдохновившись ответом на этот вопрос stackoverflow, я запустил разные комбинации каталогов rspec, чтобы выяснить, какие из них могут мешать друг другу.
В конце концов я обнаружил, что звоню:
before() do #note no :each passed to before
:
end
когда я изменил все вхождения этого на:
before(:each) do
:
end
Все спецификации прошли без сбоев:
undefined method `authenticate' for nil:NilClass
Надеюсь, это поможет другим.