【问题标题】:Integration tests with webrat and Rails3使用 webrat 和 Rails3 进行集成测试
【发布时间】:2011-02-03 14:51:02
【问题描述】:

我正在将 Rails 2.3.5 应用程序升级到 Rails 3.0.3。但是我的集成测试 不工作。我收到此错误:

NoMethodError: undefined method `content_type' for nil:NilClass

罪魁祸首是

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

我的 webrat 的 test_helper.rb 看起来像这样:

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

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

我正在使用 shoulda 2.11.3 和 webrat 0.7.3 进行测试。我读了, webrat 和 shoulda 与 Rails3 兼容。

有人知道如何解决这个问题吗?

谢谢! 晚礼服

添加

看起来,NoMethodError 似乎来自应该,而不是来自 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 with Shoulda 中不再可用。 希望可以有人帮帮我! 谢谢!

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 webrat shoulda


【解决方案1】:

https://github.com/joakimk/webrat 有一个 webrat 的分支可以与 rails3 一起使用。在某些时候,它应该被拉入主分支。 rails 2.3 这个时候还是很流行的。

【讨论】:

  • 感谢您的回答!但我决定用 capybara 代替 webrat。它适用于 Rails3,并且为 capybara 重写测试并不难
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 2019-02-28
  • 2017-01-19
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多