отдельные спецификации проходят при запуске в одиночку, но не работают при запуске всех спецификаций - PullRequest
6 голосов
/ 03 сентября 2010

У меня есть 30 спецификаций в моем файле foo_controller_spec.rb, и когда я запускаю весь файл с использованием спецификаций, я получаю 4 ошибки и 2 ожидающих.Когда я запускаю 4 ошибочных спецификации по отдельности, 3 из них все равно выходят из строя, но одна из них проходит.Сначала я подумал, что это проблема с базой данных, что данные не очищались должным образом между запусками.Поэтому я установил database_cleaner (http://github.com/bmabey/database_cleaner) и добавил этот код в мой spec_helper:

config.before(:suite) do
  DatabaseCleaner.strategy = :truncation
  DatabaseCleaner.clean_with(:truncation)
end

config.before(:each) do
  DatabaseCleaner.start
  Sham.reset
  login
end

config.after(:each) do
  DatabaseCleaner.clean
end

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

Ответы [ 4 ]

6 голосов
/ 12 января 2011

У меня была точно такая же проблема, и сходил с ума !

Я отследил проблему следующим образом (с Textmate): выберите ваши файлы в ящике проекта (несколько файлов) и затем перейдите в «Связки> Rspec> Выполнить примеры в выбранных файлах / каталогах».

Хитрость в том, чтобы найти, какой файл вызывает помехи другим.

Для меня это было изменение I18n.locale в одном файле, что привело к изменению локали для всех остальных примеров!

Я потерял несколько часов, сходя с ума от этого ...

1 голос
/ 21 июля 2016

На всякий случай, если это помогает другим: у меня была похожая проблема, и я обнаружил, что у меня

  • блуждающие Rspec.configures, которые были переопределены для всех тестов по линии
  • В одном тесте включены WebMocks, которые, по-видимому, касаются следующих в тестах, пока я не включу их в spec_helper, чтобы соединения были включены по умолчанию

    RSpec.configure do | config | config.before (: suite) сделать WebMock.allow_net_connect!

0 голосов
/ 15 ноября 2018

Команда rspec --bisect или --order rand:21237 --bisect, если вы видите ошибку в отношении упорядочения, является хорошим первым шагом к отладке.Добавьте --bisect=verbose для получения дополнительной информации.

Ссылка на выпуск RSpec GH

0 голосов
/ 25 сентября 2017

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

Это не удалось:

module SomeModule
  describe SomeController do
    it 'does something' 
  end
end

Это проходит:

describe SomeModule::SomeController do
  it 'does something'
end

проблема связана с определением объема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...