2011-04-14 166 views
3

當我運行使用Selenium我的測試中,我的一個步驟失敗和網頁看起來像這樣在瀏覽器:水豚+硒

Internal Server Error 

can't convert nil into String 
WEBrick/1.3.1 (Ruby/1.9.2/2010-08-18) at 127.0.0.1:50752 

當我與culerity運行它,而不是,我得到的輸出:

Broken pipe (Errno::EPIPE) 
      /Users/yuval/.rvm/gems/ruby-1.9.2-p0/gems/culerity-0.2.15/lib/culerity/remote_object_proxy.rb:47:in `write' 
etc... 

當我運行它沒有一個JS驅動程序,它並沒有在這一點上失敗(相反,它在使用js的時候失敗了,這就是爲什麼我試圖用js來運行它驅動程序)。

任何想法?

+0

你可以在開發模式下運行rails,這樣你可以得到完整的跟蹤?無法將nil轉換爲字符串可能在任何地方。 – 2011-04-14 18:18:32

+0

其實,它在瀏覽器中運行時運行得很好...... – 2011-04-14 18:23:56

回答

7

我剛剛面臨同樣的問題,但找到了解決方案。

如果您嘗試在開發模式下使用「http://127.0.0.1:3000」打開瀏覽器,而不是「http:// localhost:3000」,則應該面臨同樣的問題。

在我的情況下,問題是由於在我的View文件中,我使用了「request.domain」,如果請求是以類似IP的格式(即「http://127.0.0.1:50752」)返回,則返回nil。

因此,如果一個地方在你的helper方法視圖你有這樣的事情

link_to "Click me", :host => subdomain + "." + request.domain + request.port_string 

,你可以把它改成使用的輔助方法,這樣的:

link_to "Click me", :host => with_host(subdomain) 

和助手像以下:

def with_host(subdomain) 
    if request.domain.present? 
     subdomain + "." + request.domain + request.port_string 
    end 
    end 

這是最簡單的解決方案,爲我工作。也許,你有類似的東西。