私はこの問題の調査にかなりの時間を費やし、この問題に関する興味深いブログ投稿をいくつか見つけましたが、どの解決策もうまくいきませんでした。
私が試したオプションは次のとおりです。
Capybara Seleniumのデフォルトのjsドライバーから、次のようにWebkitとPoltergeistに切り替えました。
# Gemfile
gem "capybara-webkit"
# spec/spec_helper.rb
Spork.prefork do
Capybara.javascript_driver = :webkit
end
と
# Gemfile
gem "poltergeist"
# spec/spec_helper.rb
Spork.prefork do
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
end
しかし、どちらも運がありません。
このスレッドとこの記事ごとに私は試しました:
# spec/spec_helper.rb
Spork.prefork do
Capybara.server_boot_timeout = 600 # Default is 10 my entire suite
end # takes ~550s to run, that's why I
# attempted such a large boot timeout in
# case the time was from beginning of suite
# execution.
無駄に。
それから私はこの記事を見つけたので、私は試みました:
# spec/spec_helper.rb
# initial advice was for cucumber, and thus recommended this to be placed in
# the features/env.rb file
def find_available_port
server = TCPServer.new('127.0.0.1', 0)
server.addr[1]
ensure
server.close if server
end
if ENV['TDDIUM'] then
Capybara.server_port = find_available_port
end
しかし、それでは運がありません。
また、StackOverflowのこの問題に従って、database_cleanerの設定をチェックして、DatabaseCleanerがFactoryGirlのファクトリとうまく連携していることを確認しました。
まだ運がない。
次に、次のように、Guardfileの下位レベルのrspecテストからcapybaraテストを解析しようとしました。
group 'integration tests' do
# Capybara Tests
guard 'rspec', spec_paths: ['spec/requests'] do
watch(%r{^spec/requests/.+_spec\.rb})
end
# Cucumber Feature Tests
guard 'cucumber', bundler: true do
watch(%r{^features/.+\.feature$})
end
end
group 'unit tests' do
rspec_paths = ['spec/controllers', 'spec/helpers', 'spec/models', 'spec/views']
# RSpec Unit Tests
guard 'rspec', spec_paths: rspec_paths do
watch(%r{^spec/.+_spec\.rb$})
end
# Jasmine JS Unit Tests
guard 'jasmine', all_on_start: false, all_after_pass: false do
watch(%r{spec/javascripts/.+_spec\.(js\.coffee|js|coffee)$})
end
end
そして成功!ついに!