2012-08-30 1 views
1

Я использую Capybara с огурцом в приложении для рельсов. Я хочу запустить Rindex Sphinx и сервер Redis для запуска определенных тестовых сценариев. Но недостатком здесь является то, что сценарии очень медленны, поэтому они работают в течение нескольких часов.Как убедиться, что Redis и мышление sphinx не вызваны для каждого сценария в моих тестах Capybara

Вот мой 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 

Еще одна проблема, когда я запускаю это на разных машинах, существует зависимость, которая устанавливается Redis и что пользователь, имеющий разрешение на создание и уничтожение папок , Есть ли лучший способ справиться с этой ситуацией? Может быть, реализовать подобные транзакционные стили, используемые в стандартном модуле Rails?

Любая помощь очень ценится.

ответ

1

Я бы предложил использовать библиотеку, подобную fakeredis (https://github.com/guilleiguaran/fakeredis). Это избавит вас от зависимости от redis в ваших тестах и ​​гарантирует, что данные не будут поддерживаться между тестами.

Я ожидаю, что там будет что-то похожее на сфинкс, но ничего не знаю от моей головы.

+0

Позвольте мне попробовать .. спасибо за отзыв – bragboy