【发布时间】:2010-10-01 05:28:50
【问题描述】:
我想测试一个直接呈现一些 JSON 输出的控制器(通过使用“render :json => @entity_names”)。对于该任务,我在我的规范文件“response.should have_text('["enim", "enita"]')" 中尝试过。不幸的是我总是得到那个错误: 失败/错误:response.should have_text('["enim", "enita"]') 未定义的方法“has_text?”对于#
我是否错过了一些提供该方法的宝石?这是我的 Gemfile:
source 'http://rubygems.org'
gem 'rails', '>= 3.0.0'
gem 'mysql2'
gem 'mongrel'
gem 'devise'
gem 'will_paginate', :git => 'git://github.com/mislav/will_paginate.git', :branch => 'rails3'
gem 'thinking-sphinx', :git => 'git://github.com/freelancing-god/thinking-sphinx.git', :branch => 'rails3', :require => 'thinking_sphinx'
group :test, :development do
gem 'rspec-rails', '>= 2.0.0.beta.19'
gem 'steak', :git => 'git://github.com/cavalle/steak.git'
gem 'webrat'
gem 'capybara'
gem 'capybara-envjs'
gem 'shoulda'
gem 'launchy'
gem 'autotest'
gem 'autotest-rails'
gem 'test_notifier'
gem 'rails3-generators'
gem 'factory_girl_rails'
gem 'populator'
gem 'faker'
gem 'random_data'
gem 'database_cleaner', :git => 'git://github.com/bmabey/database_cleaner.git'
gem 'delorean'
end
【问题讨论】:
-
response.body.should have_text(...)
-
不能解决问题。仍然未定义方法“has_text?”。我也找不到“has_text”的方法定义?使用 grep 在我的宝石中的任何地方。 cucumber里面有这样的方法,但是在Gemfile中也加入了也没有解决问题(可能是因为我没有运行集成测试)。
-
我本来打算建议安装 Webrat,但我看到它已经列在那里(我在使用 RSpec 和使用 Webrat 解决的 has_content 方法时遇到了类似的问题)。另外,has_* 和 have_* 方法是用缺少方法的函数实现的,因此您不会在源代码中逐字找到它们。
标签: ruby-on-rails ruby-on-rails-3 rspec rspec2