Интеграционные тесты с webrat и Rails3 - PullRequest
2 голосов
/ 03 февраля 2011

Я обновляю приложение Rails 2.3.5 до Rails 3.0.3.Но мои интеграционные тесты не работают.Я получаю эту ошибку:

NoMethodError: undefined method `content_type' for nil:NilClass

Строка обвинения

assert_select "input#artist.title.unsolved", 1

Мой test_helper.rb для webrat выглядит так:

require "webrat"
require 'webrat/core/matchers'
include Webrat::Methods

Webrat.configure do |config|
  config.mode = :rack
end

IДля тестирования использую musta 2.11.3 и webrat 0.7.3.Я читал, что webrat и musta совместимы с Rails3.

Кто-нибудь знает, как это исправить?

Спасибо!tux

ADDITION :

Кажется, что NoMethodError появляется из musta, а не из Webrat, как упомянуто в заголовке.Вот трассировка:

NoMethodError: undefined method `content_type' for nil:NilClass
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activesupport-3.0.3/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/actionpack-3.0.3/lib/action_dispatch/testing/assertions/selector.rb:605:in `response_from_page_or_rjs'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/actionpack-3.0.3/lib/action_dispatch/testing/assertions/selector.rb:213:in `assert_select'
    test/integration/user_integration_test.rb:52:in `block (3 levels) in <class:UserIntegrationTest>'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-context-1.0.0.beta1/lib/shoulda/context/context.rb:412:in `call'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-context-1.0.0.beta1/lib/shoulda/context/context.rb:412:in `block in run_current_setup_blocks'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-context-1.0.0.beta1/lib/shoulda/context/context.rb:411:in `each'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-context-1.0.0.beta1/lib/shoulda/context/context.rb:411:in `run_current_setup_blocks'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-context-1.0.0.beta1/lib/shoulda/context/context.rb:393:in `block in create_test_from_should_hash'

А вот весь контекст блока вокруг assert_select:

class SongIntegrationTest < ActionController::IntegrationTest
  context "a visitor" do
    context "solving a song" do
      setup do
        @song = Song.make
        visit song_path(@song)
      end

      should "have two guess fields" do
        assert_select "input#artist.title.unsolved", 1
        assert_select "input#title.title.unsolved", 1
      end

Возможно, assert_select больше не доступен в Rails 3 с Shoulda.Надеюсь, кто-нибудь может мне помочь!ТНХ!

1 Ответ

1 голос
/ 10 февраля 2011

Есть вилка webrat, которая работает с rails3 на https://github.com/joakimk/webrat. В какой-то момент она должна быть втянута в основную ветку. рельсы 2.3 все еще очень популярны в настоящее время.

...