response.should have_text приводит к неопределенному методу has_text? - PullRequest
1 голос
/ 01 октября 2010

Я бы хотел протестировать контроллер, который напрямую выводит некоторые данные 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

1 Ответ

1 голос
/ 22 ноября 2010

Вы можете построить ожидаемый вывод в виде JSON, затем получить тело ответа (которое также является JSON), декодировать оба и сравнить их. Что-то вроде:

it "should do something" do
  expected = { :some_key => "and some value" }.to_json 
  xhr :post, :create, { :foo => "bar" }
  ActiveSupport::JSON.decode(response.body).should == ActiveSupport::JSON.decode(expected)
end 
...