我正在为rspec测试创建一个示例应用程序,我按照以下步骤操作 在Gemfile中:
gem "rspec-rails", :group => [:test, :development]
group :test do
gem "factory_girl_rails"
gem "capybara"
gem "guard-rspec"
end
然后执行以下步骤:
在我的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
但它不起作用,得到以下错误
undefined local variable or method `page'
* 我怀疑我没有正确配置水豚,让我知道配置水豚的正确方法。
答案 0 :(得分:9)
由于您未在 Gemfile 中指定Capybara的版本,我假设您已获得版本>= 2.0
,这意味着任何使用page
的测试都应该进入 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
答案 1 :(得分:5)
在将capybara dsl包含在规范助手
之后开始工作config.include Capybara::DSL
答案 2 :(得分:0)
值得查看新的Capybara DSL进行集成测试(请注意功能目录):
# 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 2.0 expect语法编写了一篇关于End-to-end testing with RSpec integration tests and Capybara的详细信息的博客文章,以及feature/scenarios
的Capybara DSL。
答案 3 :(得分:0)
您也可以将其添加到spec_helper.rb:
require 'capybara/rspec'