Rspec parallel_test контроллер спецификации случайных сбоев - PullRequest
2 голосов
/ 20 мая 2019

Во время работы parallel_rspec spec случайный сбой с контроллером любого решения.

В Gemfile

group :development, :test do 
  gem 'parallel_tests'  
end

Выполнение My Spec вот так

name@root:/project# parallel_rspec spec/controllers/
4 processes for 21 specs, ~ 5 specs per process

Randomized with seed 3503

Randomized with seed 41377
 0/62 |>                                                       |  ETA: ??:??:?? 
Randomized with seed 43603
 0/50 |>                                                       |  ETA: ??:??:?? 
Randomized with seed 61169
 3/62 |==>                                                     |  ETA: 00:08:03 
  1) Admin::ReportingsController when signed-in non-admin GET #instance_reports redirects to root_url
     Failure/Error: expect( response ).to redirect_to root_url

       Expected response to be a redirect to <http://xxx/> but was a redirect to <http://yyyy>.
       Expected "http://xxxx/" to be === "http://xxxx/code".
     # ./spec/support/functions.rb:12:in `expect_root_redirect'
     # ./spec/controllers/admin/reportings_controller_spec.rb:25:in `block (4 levels) in <top (required)>'
     # ./spec/support/factory_bot.rb:18:in `block (3 levels) in <top (required)>'
     # /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/generic/base.rb:16:in `cleaning'
     # /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/base.rb:100:in `cleaning'
     # /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/configuration.rb:86:in `block (2 levels) in cleaning'
     # /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/configuration.rb:87:in `cleaning'
     # ./spec/support/factory_bot.rb:17:in `block (2 levels) in <top (required)>'

как это происходит случайным образом.

ЕСЛИ мы запускаем команду ниже, то она работает нормально.

rspec spec/controllers

Примечание:

  • Одна БД подключена во время выполнения.
  • Кроме контроллера все работает нормально.
  • в большинстве случаев условия json не выполняются.

1 Ответ

0 голосов
/ 27 мая 2019

Похоже, что тест предполагает одно состояние приложения, но он, вероятно, был изменен каким-то параллельным запросом. (Могу поспорить, что сеанс является общим, и при тестировании вашего контроллера вы думаете, что вошедшим в систему является X, но это Y).

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

Одна БД подключена во время выполнения. Это имеет смысл в однопоточных приложениях, потому что он очищается после каждого примера. Но при параллельной работе это может привести к беспорядку, и вы никогда не сможете быть уверены, что находится в БД.

Вы изменили свою конфигурацию БД следующим образом:

test:
  database: yourproject_test<%= ENV['TEST_ENV_NUMBER'] %>

Если ты скучаешь по этому - это твое

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