我正在構建一個Rails 3應用程序,它爲移動設備(使用jQuery Mobile)和常規桌面瀏覽器呈現不同的視圖。我正在使用Cucumber/Capybara進行測試,併爲移動設備和瀏覽器分別提供測試套件。我能夠在請求的HTTP標頭設置移動用戶代理字符串就好用「頭砍」在這裏找到...水豚表單提交後沒有通過標題
Using Cucumber/Capybara in Rails 3, how do I set a custom User-Agent string?
問題... ...
我的大多數移動黃瓜步驟工作正常(例如,我設置移動頭一步,然後移動視圖呈現)。然而,在表單提交之後,測試會呈現下一步的瀏覽器視圖(而不是我想要的移動視圖)。我認爲這可能是因爲水豚在表單提交行爲之後丟棄了標題。
我試圖通過添加一個記錄器,以我的控制器行動,以測試這個,所以我可以看看USER_AGENT頭,如下所示:
def show
# …
logger.info("Headers: #{request.user_agent}")
# …
end
我用過iPhone頭(買方是資源)。在我的test.log中我看到:
對於創建行動...
Started POST "/buyers" for 127.0.0.1 at 2011-04-19 16:49:18 -0700
Processing by BuyersController#create as HTML
#...
Headers: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
#...
Redirected to http://www.example.com/buyers/1
Completed 302 Found in 7ms
對於後續show動作(注 '頭:' 爲空)...
Started GET "/buyers/1" for 127.0.0.1 at 2011-04-19 16:49:18 -0700
Processing by BuyersController#show as HTML
#...
Headers:
#...
Completed 200 OK in 4ms (Views: 2.8ms | ActiveRecord: 1.4ms)
正如人們所預料,'顯示我的頁面'步驟然後渲染瀏覽器頁面,而不是我想要的移動頁面。
如何保留標題,以便我所有的移動步驟都可以在我的移動測試套件中運行?
更新
Jnicklas(!真正真棒水豚寶石的創建者)迴應說:
「這是一個多問題的一個問題,TBH。在機架測試中,目前沒有辦法實現我知道的猴子補丁短缺。我一直在考慮爲機架測試驅動程序添加一個標題選項,這將允許傳入不同的標題選項。如果您使用的是大量的JavaScript,硒可能是更好的選擇呢,並允許您設置用戶代理自如,IIRC。」
https://github.com/jnicklas/capybara
甜,這個工程在這裏(upvoted)。但是,這不適用於webkit/javascript測試。 – 2012-08-14 18:44:13