0

任何人都知道如何使用 selenium 让 assert_response 与 webrat 一起工作?我不断得到

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.

我确定我错过了一些愚蠢的东西,但我只是没有看到它....有什么想法吗?

4

1 回答 1

0

嗯,目前看来是不可能了。

测试过程从命令行 (in Webrat::Selenium::ApplicationServers::Rails) 启动一个新的 mongrel 实例,因此无法访问@controller将由ActionController::Integration::Session.get. 这个@controller变量由 assert_response 使用。

fork我想知道使用而不是system(in Webrat::Selenium::ApplicationServers::Rails.start)来启动一个杂种服务器需要做多少工作。它可以结合使用selenium.wait_for_page_to_load以确保测试等待服务器进程完成响应。只是一个想法,我可能不会再研究它了。

对于任何使用 webrat 和 shoulda 的人,这样的事情仍然有效:

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

干杯,布赖恩

于 2010-01-16T23:18:07.130 回答