0

我正在将一个旧的 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 正在破坏 capybara 的某些方法,或者 capybara 的某些方法根本不再被加载。这可能是问题吗?


正如您的链接所暗示的,MultiBinding是标准的方法。

如果您想要模糊的解决方案,您可以创建自定义标记扩展

4

1 回答 1

0

尝试config.include Capybara::DSLspec_helper.rbconfig 块中添加。像这样:

RSpec.configure do |config|
  config.include Capybara::DSL
于 2014-05-14T23:49:30.783 回答