为什么资金请求规格中没有水豚?

Jin*_*Kim 7 rspec ruby-on-rails capybara

使用rspec和capybara处理新的Rails 3.2.9应用程序.

我在Gemfile中有以下内容:

gem 'rspec-rails'
gem 'capybara'
Run Code Online (Sandbox Code Playgroud)

以及spec/spec_helper.rb中的以下内容:

require 'rspec/rails'
require 'capybara/rspec'
Run Code Online (Sandbox Code Playgroud)

并在spec/requests/asdf_spec.rb中:

require 'spec_helper'
describe 'Asdf' do
  describe "GET /asdfs" do
    it "should list asdfs" do
      visit asdfs_path
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

此测试失败:

Failure/Error: visit asdfs_path
NoMethodError:
 undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_1:0x007fa7b68961a0>
# ./spec/requests/asdfs_spec.rb:19:in `block (4 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

所以看起来Capybara没有装满.伙计,为什么不呢?我觉得我之前已经做了十几次同样的事情......可能会对一些愚蠢的东西进行消隐.

Jin*_*Kim 13

所以这是一个水豚版本2的变化.我找到了这个:

http://alindeman.github.com/2012/11/11/rspec-rails-and-capybara-2.0-what-you-need-to-know.html

这解释了:

升级到capybara 2.0后,默认情况下,在RSpec请求规范中不会提供 capybara.相反,已经创建了一种新类型的规范 - 特征规范 - 用于水豚.

要升级到capybara 2.0,您需要做一些事情:

  • 将rspec-rails升级到2.12.0或更高版本
  • 将任何使用capybara的测试从spec/requests移动到spec/features.Capybara测试使用visit方法并且通常断言对页面.