2012-02-17 14 views
1

我有一個應用程序,它使用存儲在表中的域來確定網站的某些方面。如果在數據庫中找不到該域,則會生成錯誤。工作無頭時,capybara-webkit使用哪個端口和域名?

當我通常用黃瓜測試時,我使用域localhost,並且所有事情都按預期工作。當我嘗試使用capybara-webkit和無頭測試(用於測試站點的JavaScript部分)時,我得到了localhost的域未找到錯誤。

誰能告訴我如何確定capybara-webkit和headless正在使用的域和端口,這樣我就可以確保我可以事先將表信息插入表中。或者,也可以事先設置Capybara。

我試過以下沒有成功(雖然它都適用於我的無js /無頭測試)。

Capybara.app_host = "http://localhost" 
Capybara.javascript_driver = :webkit 

if Capybara.current_driver == :webkit 
    require 'headless' 

    headless = Headless.new 
    headless.start 
end 

回答

1

隨着一些試驗和錯誤,我發現了一些工作。我停止使用本地主機作爲數據庫中的參考,並使用127.0.0.1來代替。然後我修改env.rb中的代碼如下。

Capybara.javascript_driver = :webkit 

if Capybara.current_driver == :webkit 
    require 'headless' 

    @headless = Headless.new 
    @headless.start 
end 

Before('@javascript') do 
    @javascript = true 
end 

Capybara.app_host = @javascript.present? ? nil : "http://127.0.0.1" 

我意識到@javascript變量對於這裏的需求是多餘的,但我在別處使用它。我不確定它爲什麼可行,但它確實!