2013-03-12 30 views
0

黃瓜代表驗收測試框架。因此,黃瓜的BDD假定與控制器和視圖一起工作。Guard-cucumber:觀看和控制器相關的功能

但令人驚訝的是,如果控制器或視圖文件(與此功能相關)已更改,guard-cucumber不提供運行功能的方法。

功能和場景可以被標記。在這種情況下,我如何使用由控制器命名的標籤?

回答

2

BDD的想法是驅動從外部到內部的發展,這意味着你首先從外部描述黃瓜的功能。從外部你不瞭解軟件的內部工作原理,所以你不知道關於控制器或在黃瓜中查看文件的任何信息。要從外部與應用程序進行通信,請使用提供的界面,例如一個CLI界面或一個Web界面。給定一個網絡界面,您可以通過瀏覽網頁來描述外部:瀏覽到網址,按鏈接和按鈕,填寫表格並通過查看網頁來驗證結果。

在BDD循環中,您從外部描述了該功能,但要實現它,您需要進入內部,在那裏您使用另一個測試框架(如RSpec)驅動您的開發。在內部循環中工作時,您需要編寫模型,控制器和視圖測試來驅動您的實現,並且當內部測試循環和外部測試循環均爲綠色時,您已成功實現了您的功能。

衛隊:: RSpec的和警衛::黃瓜沒有爲提供開箱即實現由外而內的發展,但你可以使用Guard API來實現它:

guard :rspec do 
    # ... your normal rspec guard config goes here 

    # run cucumber after rspec passes 
    callback(:run_all_end) do 
    unless Guard.guards(:rspec).last_failed 
     Guard.run_all({ :guard => Guard.guards(:cucumber) }) 
    end 
    end 
end 

這種膠水代碼當所有RSpec規格都是綠色時觸發Cucumber,將焦點傳回外部循環。當然,您可以對此進行增強以對運行的功能進行更精細的控制,但這很大程度上取決於您的功能/規格文件和目錄的適當命名模式。

+0

感謝您的回答。在傳遞控制器規範之後運行黃瓜功能聽起來很合理。我一定會嘗試。但是如果我不使用視圖規格。我認爲黃瓜測試我的看法足夠 – Darkside 2013-03-14 15:56:40

+0

看起來只有功能命名架構可以處理它 – Darkside 2013-03-14 16:00:34

+0

@Darkside同意,我也沒有視圖規範,我只提及它們的完整性:)適當的功能和規範命名命名是必不可少的有罰款粒度規格運行。 – Netzpirat 2013-03-15 05:45:43