2016-11-29 46 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标记了这个问题,所以你可能想要将标签更改为水豚。

相关问题