неправильный тип аргумента Class (ожидаемый модуль) (TypeError)

Я пишу несколько тестов в webrat с помощью Sinatra, и для этого мне нужны сеансы.

В 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 => "[email protected]"
    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, он исчезает, но тогда мой тест бесполезен.


person jrg    schedule 04.02.2012    source источник
comment
Вам нужно задать вопрос ;)   -  person BoltClock    schedule 09.03.2012


Ответы (1)


Вы пытаетесь включить класс, что невозможно в ruby. Попробуйте использовать его экземпляр :). Глядя на спецификацию webrat:

rack_test_session = Rack::Test::Session.new(Rack::MockSession.new(app))
person sinm    schedule 15.03.2012