无法在Rails 3.2中设置Rspec和Capybara

log*_*han 5 capybara rspec-rails ruby-on-rails-3.2

我正在为rspec测试创建一个示例应用程序,我按照以下步骤 在Gemfile中:

gem "rspec-rails", :group => [:test, :development]
group :test do
  gem "factory_girl_rails"
  gem "capybara"
  gem "guard-rspec"
end
Run Code Online (Sandbox Code Playgroud)

然后执行以下步骤:

  1. 束.
  2. rails g rspec:安装.
  3. mkdir spec/support spec/models spec/routing.

在我的spec_helper文件中添加了"require capybara/rspec"

创建了一个样本测试,如下所示:

require 'spec_helper'
describe "Users" do
  describe " List users" do
    it "List all users" do
      get users_path
      page.has_content?('List Users')
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

但它不起作用,得到以下错误


undefined local variable or method `page' 
Run Code Online (Sandbox Code Playgroud)

*我怀疑我没有正确配置水豚,让我知道配置水豚的正确方法.

Pau*_*nti 9

由于你没有在你的Gemfile中Capybara指定一个版本,我假设你有版本>= 2.0,这意味着任何使用的测试page应该在spec/features目录下.

有关更多信息,请查看以下链接:

如果您不想使用spec/features目录,则应该能够以feature下列方式将测试标记为:

require 'spec_helper'
describe "Users" do
  describe " List users", type: :feature do
    it "List all users" do
      get users_path
      page.has_content?('List Users')
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 从规范/请求中移动我的测试文件 - > spec/features对我有用.访问时没有错误.谢谢! (2认同)

log*_*han 5

在将capybara dsl包括在spec helper之后开始工作了

config.include Capybara::DSL
Run Code Online (Sandbox Code Playgroud)