1

RailsアプリケーションでCucumberでCapybaraを使用しています。Sphinx reindex と Redis サーバーを実行して、特定のテスト シナリオを実行したいと考えています。しかし、ここでの欠点は、シナリオが非常に遅く、何時間も実行されることです。

ここに私のenv.rbファイルがあります

require 'rubygems'

ENV["RAILS_ENV"] = "cucumber"

require 'cucumber/rails'
require 'capybara/cucumber'
require 'capybara/rails'
require 'capybara/session'
require 'rake'

Capybara.default_selector = :css
ActionController::Base.allow_rescue = false
Cucumber::Rails::World.use_transactional_fixtures = true
Capybara.default_wait_time = 4
Capybara.ignore_hidden_elements=false
Capybara::Server.new(Capybara.app).boot

include Rake::DSL
Rake::Task["db:fixtures:load"].invoke

Before('@javascript') do
  Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(app,:browser=>:chrome )
  end
  Capybara.current_driver = :selenium
  Capybara.javascript_driver=:selenium
end

Before('@javascript', '@index') do
  `rake ts:in RAILS_ENV=cucumber` unless ThinkingSphinx.sphinx_running?
  `rake ts:start RAILS_ENV=cucumber`
end

After('@javascript','@index') do
  `rake ts:stop RAILS_ENV=cucumber`
end

Before('@javascript','@redis','@javascript') do
  `redis-server config/test_redis.conf`
  `rake redis_specifics:cache_build RAILS_ENV=cucumber --trace`
end

After('@javascript','@redis','@javascript') do
  pid = `ps aux | grep 'config/test_redis.conf'| grep -v 'grep' | awk '{print $2}'`
  `pkill #{pid}`
end

もう1つの問題は、これを別のマシンで実行すると、Redisがインストールされているという依存関係があり、ユーザーがフォルダーを作成および破棄する権限を持っているということです。この状況を処理するためのより良い方法はありますか? Rails の通常のテスト フレームワークが使用する同様のトランザクション スタイルのフィクスチャを実装する可能性がありますか?

どんな助けでも大歓迎です。

4

1 に答える 1