5

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

gem "rspec-rails", :group => [:test, :development]
group :test do
  gem "factory_girl_rails"
  gem "capybara"
  gem "guard-rspec"
end

然后执行以下步骤:

  1. 捆。
  2. rails g rspec:安装。
  3. mkdir 规范/支持规范/模型规范/路由。

在我的 spec_helper 文件中添加了“需要 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

但它不起作用,出现以下错误


undefined local variable or method `page' 

*我怀疑我没有正确配置 capybara,让我知道配置 capybara 的正确方法。

4

4 回答 4

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
于 2012-12-25T12:51:59.023 回答
5

在将 capybara dsl 包含到规范助手后开始工作

config.include Capybara::DSL
于 2012-12-25T06:54:53.490 回答
0

值得一试新的 Capybara DSL 进行集成测试(注意 features 目录):

# spec/features/user_list_spec.rb
require 'spec_helper'

feature 'User list' do
  scenario 'List all users' do
    visit users_path
    expect(page).to have_content 'List Users'
  end
end

我写了一篇博客文章,详细介绍了使用 RSpec 集成测试和 Capybara使用 RSpec 2.0 expect 语法进行端到端测试feature/scenarios,以及 Capybara DSL for .

于 2013-03-06T01:21:31.590 回答
0

您也可以将其添加到您的 spec_helper.rb 中:

require 'capybara/rspec'
于 2014-09-05T12:44:31.730 回答