加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – Capybara&RSpec

发布时间:2020-12-17 02:34:53 所属栏目:百科 来源:网络整理
导读:我不能让Capybara成功地工作,它抱怨has_text是一个未定义的方法. 我创建了一个新的rails 3.1项目(rails new test -T). 的Gemfile: source 'http://rubygems.org'gem 'rails','3.1.3'gem 'sqlite3'group :assets do gem 'sass-rails','~ 3.1.5' gem 'coffee-
我不能让Capybara成功地工作,它抱怨has_text是一个未定义的方法.

我创建了一个新的rails 3.1项目(rails new test -T).

的Gemfile:

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

我已经安装了spec文件夹:rails g rspec:install.

投机/ 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)>'

解决方法

你最有可能使用的是当前稳定版本的capybara 1.1.2,但它没有has_text?方法.您可以使用 has_content?(以及相应的has_content matcher),也可以直接从github存储库使用capybara,如Skydreamer建议的那样.

请注意has_content?有一些不同的行为,如README中所述.另一方面,直接从存储库使用gem并不总是安全的,因为这个版本可能不是很稳定.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读