错误的参数类型类(预期的模块)(TypeError)

时间:2012-02-04 19:23:37

标签: ruby sinatra webrat

我正在用sinatra在webrat上写一些测试,作为其中的一部分我需要会话。

webrat wiki提到我需要拨打use Rack::Session::Cookie而不是enable :sessions - 我已经这样做了。

此特定测试如下所示:

class RegisterNewUserTest < Test::Unit::TestCase
  include Webrat::Methods
  include Webrat::Matchers
  include Webrat::Session


  def app
    Rack::Builder.parse_file('config.ru').first
  end

  def register_new_user
    visit '/signup' 
    fill_in "user[email]", :with => "testing@jamesrgifford.com"
    set_hidden_field "user[password]", :to => "password"
    set_hidden_field "user[password_confirmation]", :to => "password"
    click_button "Register"
  end
end

当我运行它时,我收到以下错误:

in `include': wrong argument type Class (expected Module) (TypeError)
        from test.rb:77:in `<class:RegisterNewUserTest>'
        from test.rb:74:in `<main>'

当我删除Webrat::Session时,它会消失,但之后我的测试毫无用处。

1 个答案:

答案 0 :(得分:3)

你正在尝试包含一个类,这在ruby中是不可能的。尝试使用它的实例:)。看webrat规范:

rack_test_session = Rack::Test::Session.new(Rack::MockSession.new(app))