2011-05-12 78 views
4

我希望通過Javascript測試Ajax Content和正常切換的內容。如何使用rails cucumber,rspec,capybara在視圖(dhtml)中測試動態部分?

我的設置是:

 
- Rails 3.1 
- Rspec (Edge) 
- Cucumber (Edge) 
- Capybara (Edge) 

對於expample,我想有一個表格,這隻能說明特定領域,如果選擇某種類型的這種模式的:

文章可以外接文章(url) 或內部。 類型「externa_url」應顯示2個輸入字段和2個複選框,然後鍵入「article」, ,該文本具有正文textarea。

最好的方式來實現這一點,還與測試?

它應該是服務器端,以便部分被加載,如果某個文章類型被選中, 或與JavaScript,切換所需的HTML?

+0

已經有關於此主題的截屏視頻,但它完全不符合我的需求,所以看到一個共同的最佳實踐是非常困難的。 – radosch 2011-05-12 00:15:36

+1

這是否符合您的需求? http://openmonkey.com/2010/04/09/javascript-testing-with-cucumber-capybara/ – Fran 2011-06-02 09:09:49

+0

是的,其實我發現也只有這個...其他文章中有關硒測試。 – radosch 2011-06-03 06:15:36

回答

2

實際上,受Fransico(評論)的啓發,我寫下了自己的知識。 我寫我自己的答案,它也可以幫助其他人...

首先我想提及,我只回答我的問題 - 只做集成測試。 用黃瓜和硒。 和具體的JavaScript測試與茉莉花。

但是,當黃瓜(邊緣)的軌道集成測試(3.1),水豚和硒,你必須要知道的一些事情:

看,那你把所有的寶石更新!

1)激活你的驅動程序,如果您還沒有

功能/支持/ capybara.rb

Capybara.javascript_driver = :selenium 

2)目前只有Firefox的< = 4的作品與硒的webdriver鋼軌,因爲我幾乎沒有幾個小時從頭開始配置和安裝每個組件,比如機架等。

3)水豚本身處理不了很多,它可以幫助你輕敲在列表中,尤其是jquery-tokeninput。

3.1)我用這個列表從標記選擇一個項目:

When(/^I select the option containing "([^\"]*)" in the Tag List/) do |text| 
    find("li:contains('#{text}')").click 
end 

你會發現這個方法與「定位」,而不是找到的,不要嘗試,API /驅動器具有改變發現。 查找自動等待並檢查Ajax響應以及dom查找元素。

4)爲您的JS/Ajax響應代碼添加您自己的幫助程序/查找程序/點擊例程, 請記住,它是「唯一」的集成測試,您可能想要使用yasmine或其他js測試您的JS代碼測試框架。

如需更多信息,還可以查看Ryan Bates(http://railscasts.com)的Screencast,他涵蓋了幾個關於Testing Rails的主題;檢查最新的一個爲JavaScript

或者本博客:http://openmonkey.com/2010/04/09/javascript-testing-with-cucumber-capybara/ (日Thnx舊金山)

希望這可以幫助別人也是如此。

+1

不客氣。 AFAIK你可以使用除硒以外的水豚。我聽說akephalos相當好的東西https://github.com/bernerdschaefer/akephalos也許值得找你。 – Fran 2011-06-03 09:29:04

相關問題