Save_and_open_page и spork, spork потеряет тестовый набор/выход
Когда я запускаю свои тесты rspec со spork, каждый раз, когда я использую capybara save_and_open_page, spork теряет тестовый набор.. или, может быть, больше ничего не выводит...
См. журнал
# => without save_and_open_page
09:04:24 - INFO - Spork server for RSpec, Test::Unit successfully started
09:04:24 - INFO - Guard::RSpec is running
09:04:24 - INFO - Running all specs
Running tests with args ["--drb", "-f", "progress", "-r", "/Users/myuser/.rvm/gems/ruby-1.9.3-p392/gems/guard-rspec-2.5.2/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec"]...
................
Finished in 4.1 seconds
16 examples, 0 failures
Randomized with seed 50331
Done.
# => with save_and_open_page, no .... are shown anymore
09:04:29 - INFO - Guard is now watching at '/Users/myuser/coding/myproject'
09:04:39 - INFO - Running: spec/features/registration/registration_process_spec.rb
Running tests with args ["--drb", "-f", "progress", "-r", "/Users/myuser/.rvm/gems/ruby-1.9.3-p392/gems/guard-rspec-2.5.2/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec/features/registration/registration_process_spec.rb"]...
Done.
# => without save_and_open_page, also no .... anymore (after restart it works again)
[1] guard(main)> Running tests with args ["--drb", "-f", "progress", "-r", "/Users/myuser/.rvm/gems/ruby-1.9.3-p392/gems/guard-rspec-2.5.2/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec/features/registration/registration_process_spec.rb"]...
Done.
# => here i added some errors into my code... still no error message shown...
[1] guard(main)> Running tests with args ["--drb", "-f", "progress", "-r", "/Users/myuser/.rvm/gems/ruby-1.9.3-p392/gems/guard-rspec-2.5.2/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec/features/registration/registration_process_spec.rb"]...
Done.
# only works again after restarting spork
Любые предложения?
Ответы
Ответ 1
Как-то ваш STDOUT
заменяется каким-то другим буфером. Итак, все, что написано Capybara в STDOUT, игнорируется или потребляется где-то в другом месте.
Попробуйте следующее:
# Add global before/after blocks
before :each do
@old_stdout, @old_stderr = STDOUT, STDERR
end
after :each do
STDOUT, STDERR = @old_stdout, @old_stderr
# Some gems use $stdout and $stderr, instead of STDOUT and STDERR, replace those too
$stdout, $stderr = @old_stdout, @old_stderr
end
Capybara save_and_open_page
использует Launchy gem. Поэтому я считаю, что STDOUT
и STDERR
получаются в одном из этих драгоценных камней.
Ответ 2
Я нашел реальное решение для описанной проблемы на http://blog.mikecordell.com/2013/08/14/guard-and-capybara's-save_and_open_page.html. Особая благодарность фактическому автору этого решения.
Просто добавьте:
RSpec.configure do |config|
config.before(:each) do
@old_stdout, @old_stderr = STDOUT, STDERR
end
config.after(:each) do
$stdout, $stderr = @old_stdout, @old_stderr
end
end
в spec_helper.rb