我正在将一个旧的 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.rb
,acceptance_helper.rb
如果它们有任何用处。
我想值得注意的是,这些规范在我更新 rspec-rails 和 capybara 之前就已经通过了。
我的直觉是,也许 rspec-rails 正在破坏 capybara 的某些方法,或者 capybara 的某些方法根本不再被加载。这可能是问题吗?