2016-07-20 5 views
0

Мой тестовый код в спецификации/функциях/posts_spec.rb выглядит следующим образомКапибара особенность функция работает только если JS: правда

require 'spec_helper' 
feature 'Posts' do 
    scenario 'Editing of Micropost', js: true do 
    visit '/signin' 
    fill_in 'Email', with: '[email protected] 
... 

код прекрасно работает с js: true. Однако, если я вынимаю js: true, тест не на fill_in 'Email' и если я использую save_and_open_page непосредственно перед этой линии я вижу

Not Found: /signin 

Я понимаю, что я не должен ставить js: true, если мне не нужно, чтобы протестировать javascript, и драйвер по умолчанию rack_test должен работать. Что происходит не так? Мой файл spec_helper выглядит следующим образом

ENV['RAILS_ENV'] ||= 'test' 
require File.expand_path('../../config/environment', __FILE__) 
require 'rspec/rails' 
require 'capybara' 
require 'capybara/rails' 
require 'capybara/rspec' 
require 'capybara-screenshot' 
require 'capybara-screenshot/rspec' 
require 'capybara/poltergeist' 
require 'pp' 
require Rails.root.join('app/services/dbg').to_s 
require 'database_cleaner_support' 
require 'shoulda_matchers_support' 
require 'chris_matchers_support' 
require 'chris_helpers_support' 
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } 
Capybara.default_host = 'www.example.com' 
RSpec.configure do |config| 
    Capybara.default_driver = :rack_test 
    Capybara.javascript_driver = :poltergeist 
    Capybara::Webkit.configure(&:block_unknown_urls) 
    Capybara::Screenshot.prune_strategy = { keep: 20 } 
    Capybara::Screenshot.append_timestamp = false 
    config.include Capybara::UserAgent::DSL 
    config.include Rails.application.routes.url_helpers 
    config.include ApplicationHelper 
    config.include AccountsHelper 
    config.mock_with :rspec 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = false 
    config.filter_run focus: true 
    config.run_all_when_everything_filtered = true 
    ActiveRecord::Migration.maintain_test_schema! # dont need db:test:prepare 
end 
RSpec.configure do |config| 
    config.before(:suite) do 
    DatabaseCleaner.clean_with(:truncation) 
    end 
    config.before(:suite) do 
    DatabaseCleaner.strategy = :transaction 
    end 
    # config.before(:each, :js => true) do 
    #  DatabaseCleaner.strategy = :truncation 
    # end 
    config.before(:each) do |example| 
    if example.example.metadata[:js] 
     DatabaseCleaner.strategy = :truncation 
    else 
     DatabaseCleaner.strategy = :transaction 
    end 
    DatabaseCleaner.start 
    end 
    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
end 
+0

Вы используете 'database_cleaner'? можете ли вы вставить содержимое своей конфигурации – itsnikolay

+0

Вы пытались сделать то же самое вручную с отключенным JavaScript? –

+0

Как отключить Javascript в rspec? – Obromios

ответ

0

Решение было удалить строку

Capybara.default_host = 'www.example.com' 

Я не знаю, почему это вызывает проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^