assert_response не работает с вебратом в режиме селена - PullRequest
0 голосов
/ 11 января 2010

Кто-нибудь знает, как заставить assert_response работать с вебратом, используя селен? Я продолжаю получать

NoMethodError: undefined method `response_code' for nil:NilClass

Вот мой тест:

def test_basic_page_load
  visit root_path
  click_link "register"
  assert_response 200
end

Вот ошибка:

==> Waiting for Selenium RC server on port 4444... Ready!
==> Waiting for rails application server on port 3001... Ready!
E

  1) Error:
test_basic_page_load(UserCrudTest):
NoMethodError: undefined method `response_code' for nil:NilClass
    /test/integration/user_crud_test.rb:11:in `test_basic_page_load'

Finished in 12.269964 seconds.

Я уверен, что это что-то глупое, что мне не хватает, но я просто не вижу этого ... Есть идеи?

1 Ответ

0 голосов
/ 17 января 2010

Хммм, похоже, сейчас это невозможно.

Процесс тестирования запускает новый экземпляр mongrel из командной строки (в Webrat::Selenium::ApplicationServers::Rails) и поэтому не имеет доступа к переменной @controller, которая была бы установлена ​​в ActionController::Integration::Session.get. Эта переменная @controller используется assert_response.

Интересно, сколько было бы работы, чтобы запустить сервер Mongrel, используя fork вместо systemWebrat::Selenium::ApplicationServers::Rails.start). Может быть объединен с selenium.wait_for_page_to_load, чтобы гарантировать, что тест ожидает, пока процесс сервера завершит ответ. Просто идея, я, вероятно, больше не буду в нее разбираться.

Для тех, кто использует webrat с musta, что-то подобное будет работать:

setup do
  fill_in :login, :with => Factory.next(:login)
  fill_in :email, :with => Factory.next(:email)
  fill_in "Password", :with => 'asdf'
  fill_in "Password confirmation", :with => 'asdf'
  click_button :Register
  selenium.wait_for_page_to_load(10)
end
should_create :user

Ура, Brian

...