0

セレンを使用して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

うーん、現時点では不可能のようです。

テストプロセスは、コマンドライン(内)から新しい雑種インスタンスを開始するため、によって設定される変数にWebrat::Selenium::ApplicationServers::Railsアクセスできません。この変数はassert_responseによって使用されます。@controllerActionController::Integration::Session.get@controller

(in )forkの代わりにを使用してmongrelサーバーを起動するのはどれくらいの作業になるのだろうか。これを組み合わせて、サーバープロセスが応答を完了するのをテストが確実に待機するようにすることもできます。ただのアイデアですが、私はおそらくこれ以上調べません。systemWebrat::Selenium::ApplicationServers::Rails.startselenium.wait_for_page_to_load

shouldaでwebratを使用している人にとっては、次のようなものでも機能します。

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 に答える