2016-11-29 56 views
0

我已經開始通過Rspec(水豚)測試我的應用程序。我是這麼做的:Rails Rspec IntegrationTest Capybara

require 'rails_helper' 
RSpec.describe "Homepages", type: :request do 
    describe "GET/without login" , js: true do 
    before(:all) do 
     Employee.create(username: "username", password: "12345", password_confirmation: "12345") 
    end 
    it "works!" do 
     visit root_path 
     fill_in "loginname", with: "username" 
     fill_in "password", with: "12345" 
     click_button('sign_in') 
    end 
    end 
end 

由於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請求類型規格。嘗試將您的spec 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

正如其他人所指出的,水豚測試應該是類型「功能」而不是「要求」的,但是這不是你的錯誤的主要原因。您的應用程序代碼在模板呈現期間引發異常,然後遇到當前版本的Capybara中的一個錯誤,它處理的初始化程序需要多個參數。只要你不使用jRuby,你可以將你的Capybara版本鎖定到2.10.0,你應該看到你的應用程序正在提升的錯誤。如果您正在使用JRuby,或者如果你喜歡不鎖定的舊版本,您可以指定要使用水豚

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

已經錯誤固定的主分支。

作爲一個側面說明,當你沒有真正使用capybara-webkit驅動程序時(因爲它目前只支持Capybara 2.7.1),所以你用capybara-webkit標記了這個問題,所以你可能想要將標籤更改爲水豚。

相關問題