2016-05-21 15 views
0

RSpecのPoltergeistドライバを使用して、Capybaraで簡単な仕様を作成しようとしています。私は合格テストを期待していたときに、私は次のエラーを取得するが、テストが失敗しなければならない問題があるように思えません:PoltergeistとRSpecでCapybaraエラーが発生しました

~/.rbenv/versions/2.2.3/lib/ 
    ruby/gems/2.2.0/gems/poltergeist-1.6.0/lib/capybara/poltergeist/errors.rb:17:in 
    `initialize': wrong number of arguments (0 for 2) (ArgumentError) 

私はコードの行は、エラーが示された場所にナビゲート:

class JSErrorItem 
     attr_reader :message, :stack 

     def initialize(message, stack) 
     @message = message 
     @stack = stack 
     end 

     def to_s 
     [message, stack].join("\n") 
     end 
    end 

しかし、私はこのコンストラクタと対話する必要がある場所を見つけることができませんでした。

この

は予想通り、私は

describe 'Sign Up', type: :feature do 
    it 'should allow user creation through the signup form' do 
    visit new_user_url host: 'http://localhost:3000' 
    within('.form') do 
     fill_in('user[username]', with: 'Example') 
     fill_in('user[password]', with: 'Password') 
     fill_in('user[password_confirmation]', with: 'Password') 
     find(".submit-button").click 
     puts page.body 
     expect(page).to have_content('Welcome') 
     User.last.destroy! 
    end 
    end 
end 

puts page印刷物のページの内容を書いていますスペックですが、エラーが発生し、後に仕様の行の残りは実行されません。奇妙なことに、私は仕様を通過すると予想されるときにだけエラーが発生します。私が失敗したテストを期待しているとき、スペック全体が間違いなく実行されます。

マイスペックヘルパーは、以下のように設定された:

RSpec.configure do |config| 
    require 'capybara/rspec' 
    require 'capybara/poltergeist' 
    require 'capybara/dsl' 

    Capybara.register_driver :poltergeist do |app| 
     Capybara::Poltergeist::Driver.new(app, time_out: 120, phantomjs_options: ['--ignore-ssl-errors=yes'], js_errors: false) 
    end 

    Capybara.configure do |c| 
     c.javascript_driver = :poltergeist 
     c.default_driver = :poltergeist 
     c.app_host = 'http://localhost:3000' 
    end 


    config.expect_with :rspec do |expectations| 
     expectations.include_chain_clauses_in_custom_matcher_descriptions = true 
    end 

    config.mock_with :rspec do |mocks| 
     mocks.verify_partial_doubles = true 
    end 
    end 
+0

コード内のJsErrorItemクラスのどこかが初期化されているがテストに合格するためにエラーが発生しないため、テストが正常に終了するとエラーが発生します。 2引数エラーの場合は0です。失敗すると、必要に応じてエラーが発生します。初期化メソッドで、エラーを避けるためにパラメータをオプションにすることができますが、これは直接問題を解決するものではありません。 – bkunzi01

+0

ポルターガイスト1.6.0は1年以上経過しています。これはブラウザのテストでは長い時間です。1.9.xにアップグレードし、さらにphantomjs 2.1以降を実行していることを確認してから、まだエラーがあるかどうか確認してください。 –

+0

これは、テストされたページでJavascriptエラーとして発生したエラーのようです。 PoltergeistはデフォルトでJSエラーを発生させ、テストに失敗します。代わりにポルターガイストの内部的なエラーであるという事実は、@TomWalpoleが示唆したように、古すぎるポルターガイストのバージョンを話す。しかし、[readme](https://github.com/teampoltergeist/poltergeist#customization)に記載されているように、poltergeistドライバを 'js_errors:false'で設定することで、JSエラーの発生を無効にすることもできます。 – BoraMa

答えて

1

コメントで提案されているように私は2.1に1.9とPhantomJSにポルターガイストをアップグレードし、それが問題を修正しました。

関連する問題