Capybara验收测试:未定义的方法`visit'for#

时间:2013-01-10 17:52:06

标签: ruby-on-rails ruby-on-rails-3 rspec capybara acceptance-testing

我正在将旧的krufty应用程序升级到Rails 3.1。该公司一直在使用RSpec和Capybara进行验收测试。我们在spec/acceptance下进行了一些验证测试失败,并显示以下消息:

Failure/Error: get @url
 NoMethodError:
   undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007feb7c0abf58>

以下是其中一个测试的示例(从文件顶部开始):

require_relative 'acceptance_helper'                                                                                                                                                 

feature 'Catalog' do                                                                                                                                                                 
  before do                                                                                                                                                                          
    Settings.use_catalog_navigation = true                                                                                                                                           
  end                                                                                                                                                                                

  context 'with a Vendor' do                                                                                                                                                         
    before do                                                                                                                                                                        
      @vendor = create(:vendor, slug: 'abc')                                                                                                                                         
      @product = create(:product_with_variants, vendor: @vendor)                                                                                                                     

      @non_vendor_product = create(:product_with_variants)                                                                                                                           
      @invisible_product = create(:product_with_variants,                                                                                                                            
                                   vendor: @vendor,                                                                                                                                  
                                   visible: false)                                                                                                                                   
      @non_available_product = create(:product_with_variants,                                                                                                                        
                                       vendor: @vendor,                                                                                                                              
                                       available: false)                                                                                                                             

      @url = "/#{@vendor.slug}"                                                                                                                                                      
    end                                                                                                                                                                              

    it 'sets @vendor' do   # <- FIRST FAILING TEST                                                                                                                                                          
      get @url                                                                                                                                                                       
      assigns(:vendor).should == @vendor                                                                                                                                             
    end

    ...  

在咨询oracle时,我一直在提到“访问”方法的问题,例如:https://github.com/jnicklas/capybara/issues/814

我还会不断发现与本文相关的帖子:http://alindeman.github.com/2012/11/11/rspec-rails-and-capybara-2.0-what-you-need-to-know.html

我不确定我是否遇到同样的问题。我可以发布我的spec_helper.rbacceptance_helper.rb,如果它们有用的话。

我想值得注意的是,在更新rspec-rails和capybara之前,这些规格已经过去了。

我的直觉是,也许rspec-rails正在破坏一些水豚的方法,或者一些水豚的方法根本不再被加载。这可能是问题吗?

1 个答案:

答案 0 :(得分:0)

尝试在配置块内的config.include Capybara::DSL中添加spec_helper.rb。像这样:

RSpec.configure do |config|
  config.include Capybara::DSL