2010-01-11 51 views
0

任何人都知道如何讓使用硒的webrat使用assert_response?我不斷收到assert_response在selenium模式下不能與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. 

我敢肯定,這是一些愚蠢的我失蹤,但我只是不」沒有看到它....任何想法?

回答

0

嗯,看起來目前還不可能。

測試過程從命令行(在Webrat::Selenium::ApplicationServers::Rails中)開始一個新的雜種實例,因此無法訪問將由ActionController::Integration::Session.get設置的@controller變量。這個@controller變量被assert_response使用。

我想知道使用fork而不是system(在Webrat::Selenium::ApplicationServers::Rails.start)啓動一個雜種服務器會有多少工作。它可以與selenium.wait_for_page_to_load結合使用,以確保測試等待服務器進程完成響應。只是一個想法,我可能不會再看到它。

對於使用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 

乾杯, 布賴恩