2016-11-29 11 views
0

私はRspec(Capybara)経由で私のアプリケーションをテストし始めました。これは私がやっている方法です:Rails Rspec IntegrationTest Capybara

envすなわち "TEST-ENV"のため、最初に従業員を作成する必要があります。私が実行した場合 問題は、ある「すくいスペックを:リクエスト」、私はこのエラーを取得:

1) Homepages GET/without login works! 
Got 0 failures and 2 other errors: 

1.1) Failure/Error: 
     def initialize(template, original_exception) 
      super(original_exception.message) 
      @template, @original_exception = template, original_exception 
      @sub_templates = nil 
      set_backtrace(original_exception.backtrace) 
     end 

     ArgumentError: 
     wrong number of arguments (1 for 2) 

    #/.rvm/gems/ruby-2.1.1/gems/actionview-4.2.7/lib/action_view/template/error.rb:64:in `initialize' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara/session.rb:128:in `exception' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara/session.rb:128:in `raise' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara/session.rb:128:in `rescue in raise_server_error!' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara/session.rb:125:in `raise_server_error!' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara/session.rb:113:in `reset!' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara.rb:334:in `block in reset_sessions!' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara.rb:334:in `reverse_each' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara.rb:334:in `reset_sessions!' 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara/rspec.rb:21:in `block (2 levels) in <top (required)>' 
    # ------------------ 
    # --- Caused by: --- 
    # Capybara::CapybaraError: 
    # Your application server raised an error - It has been raised in your test code because Capybara.raise_server_errors == true 
    # /.rvm/gems/ruby-2.1.1/gems/capybara-2.10.1/lib/capybara/session.rb:126:in `raise_server_error!' 
+0

私はカピバラの機能テストをしようとしているが、rspec要求タイプの仕様として問題があると思います。スペックintのフィーチャーフォルダーを移動し、タイプをフィーチャーに変更してください。 – Argonus

+0

悲しいことに、それは解決策ではありません – Arthur

+0

spec_helper.rbに 'require 'capybara/rspec''を追加しましたか? – Argonus

答えて

0

私はよく分からないが、タイプ=が

サンプル

require "rails_helper" 

RSpec.feature "Homepages", type: :feature do 
    before do 
    Employee.create(username: "username", password: "12345", password_confirmation: "12345") 
    end 

    context "GET/without login" do 
    scenario "works!", js: true do 
     visit root_path 
     fill_in "loginname", with: "username" 
     fill_in "password", with: "12345" 
     click_button('sign_in') 
    end  
    end 
end 
を備えていた場合、私はより良いと思います

私が思う

入力名を取得するために要素を検査して、入力された名前が正しいことを確認してください

他の人のよう
fill_in "loginname", with: "username" 

多分こと

fill_in "user[loginname]", with: "username" 
0

述べた、カピバラのテストはタイプ「機能」は「要求」である必要があり、しかし、それはあなたのエラーの主な原因ではありません。あなたのアプリケーションコードはテンプレートのレンダリング中に例外を起こしています。そしてカピバラの現在のバージョンでは、イニシャライザが複数のパラメータを取る例外を処理するバグに遭遇しています。あなたがjRubyを使用していない限り、あなたのCapybaraバージョンを2.10.0にロックすることができます。あなたのアプリケーションが発生している正しいエラーが表示されます。あなたはJRubyのを使用している場合、または古いバージョンにロックしないことを好む場合は、固定のバグがありカピバラ

gem 'capybara', github: 'teamcapybara/capybara' 

のmasterブランチを使用するように指定することができます。

capybara-webkitドライバを実際に使用していない場合(現在Capybara 2.7.1までしかサポートしていないため)、この質問をcapybara-webkitでタグ付けしました。カピバラだけにタグを変更する。

関連する問題