Тестирование RSpec View с использованием Rails3 и RSpec2 - PullRequest
0 голосов
/ 05 августа 2011

RSpec2 не включает have_tag помощник по тестированию. Вместо этого использование have_tag или have_selector сопоставителей webrat невозможно, поскольку Webrat и Rails 3 еще не совместимы. Есть ли способ написать полезные RSpec view тесты ? Можно использовать assert_select вместо have_tag, но тогда можно было бы Test::Unit тестировать в первую очередь. Или больше не рекомендуется писать тесты представления RSpec, потому что интеграционные тесты с Capybara или Cucumber лучше?

Ответы [ 2 ]

1 голос
/ 06 августа 2011

На самом деле Webrat работает с Rails 3. Я проверил это и смог использовать средство сравнения have_selector (have_tag не сработало).

Вы можете взглянуть на эту группу Googleобсуждение .По сути, вам не нужен блок Webrat.configure, упомянутый в readme webrat, и, следуя решению списка рассылки, добавьте эти строки в ваш spec_helper.rb:

include Webrat::Methods
include Webrat::Matchers

Как видите, Webratбольше не обновляется, так что да, вам может быть лучше с интеграционным тестированием с Cucumber (+ Capybara).

0 голосов
/ 30 августа 2011

Webrat вызвал слишком много проблем, также возможно использовать Capybara с RSpec. DSL Capybara (с функциями has_selector?, has_content? и т. Д.) Доступен для следующих тестов RSpec: spec/requests, spec/acceptance или spec/integration.

Если вы используете последнюю версию Capybara (~> 1.0.1) - более старые версии, такие как 0.4.0, не будут поддерживать это - и добавьте следующие строки в ваш spec_helper.rb файл

require "capybara/rspec"
require "capybara/rails"

тогда вы можете написать, например, следующий тест запроса RSpec

require 'spec_helper'

describe "Posts" do
  describe "GET /blog" do
    it "should get blog posts" do
      get blog_path
      response.status.should be(200)
      response.body.should have_selector "div#blog_header"
      response.body.should have_selector "div#blog_posts"
    end
  end
end
...