2016-07-20 4 views
0

Mein Test-Code in der Spezifikation/features/posts_spec.rb wie dieseCapybara Feature-Spezifikationen arbeiten nur, wenn js: true

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

Der Code mit js: true gut funktioniert. Allerdings, wenn ich js: true herausnehmen, schlägt der Test fehl am fill_in 'Email' und wenn ich save_and_open_page unmittelbar vor dieser Linie verwende ich sehen

Not Found: /signin 

Mein Verständnis ist, dass ich nicht die js: true setzen müssen, es sei denn, ich brauche zu testen JavaScript-Funktion und der Standardtreiber rack_test sollte funktionieren. Was läuft falsch? Meine spec_helper Datei ist wie folgt

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

Verwenden Sie 'database_cleaner'? Kannst du den Inhalt der Config einfügen – itsnikolay

+0

Hast du versucht, das gleiche manuell mit deaktiviertem JavaScript zu machen? –

+0

Wie deaktiviert man Javascript in rspec? – Obromios

Antwort

0

Die Lösung, die die Linie

Capybara.default_host = 'www.example.com' 

Ich bin nicht sicher zu löschen war, warum das Problem verursacht wurde.

Verwandte Themen