【发布时间】:2011-12-31 15:29:06
【问题描述】:
我无法让 Capybara 成功工作,它抱怨 has_text 是一个未定义的方法。
我创建了一个新的 rails 3.1 项目 (rails new test -T)。
宝石文件:
source 'http://rubygems.org'
gem 'rails', '3.1.3'
gem 'sqlite3'
group :assets do
gem 'sass-rails', '~> 3.1.5'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
group :test do
gem 'rspec-rails'
gem 'capybara'
end
我已经安装了规范文件夹:rails g rspec:install。
spec/spec_helper.rb:
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rspec'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :rspec
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
end
最后是我的测试文件:
require 'spec_helper'
feature "the test" do
scenario "GET /" do
visit('/')
page.should have_text('Welcome aboard')
end
end
所以我启动了 rspec:bundle exec rspec spec/my_test.rb,这是错误:
F
Failures:
1) the test GET /
Failure/Error: page.should have_text('Welcome aboard')
NoMethodError:
undefined method `has_text?' for #<Capybara::Session>
# ./spec/my_test.rb:6:in `block (2 levels) in <top (required)>'
【问题讨论】:
-
KL-7,你对我的问题有什么改变?我看到它和我写它时完全一样。事实上,我已经做了两个版本的差异,它们是相同的。
-
别担心,没什么特别的。只是在第一句话中用反引号包裹了“has_text”,所以它变得更加引人注目。您可以在修订历史记录中看到它。
-
好的。修订历史在哪里? (只是想知道,因为我还没有找到那个选项)。
-
见FAQ。
-
哎哟!现在我明白了……谢谢! :)
标签: ruby-on-rails-3 capybara rspec-rails