黃瓜的意義在於允許在功能文件中的每個場景中發生簡單的英語表達。如何實現在步驟文件中詳細說明。你在功能陳述中放置了太多細節。這將是一個噩夢來維持,所以它可能不會。具有可預測的結果。
情景也許應該去像這樣:
Scenario The first thing our REST service does
Given I have a REST service
When I connect with request "something"
Then I should get this result
在你的設置與匹配步驟文件:
Given(/I have a REST service/i) do
j_element = 'first value'
. . .
end
的請求在匹配指定:
When(/I connect with request "(.*)"/i) do |something|
# Set new value
j_element = something
#send jason call
. . .
return @result_set = visit(rest_api_path(j_element))
end
結果在匹配器中檢查:
Then(/I should get this result/i) do
check_result(result_set)
. . .
end
由於直接在方法之間傳遞實例變量並不是很好,所以您應該在步驟文件中定義存取方法以優雅的方式處理這個方法。那些在多個地方使用自己的方法裏面並傳入要檢查作爲參數什麼
def result_set()
@result_set ||= 'nothing set yet'
end
認沽測試。
def check_result(result)
assert . . .
#or
result.j_element.should . . .
end
所有你目前投入的特徵文件,而不是具體的東西應該放在後面的匹配器的do-end
塊內或輔助方法(如check_result
和result_set
)。這使得了解你的場景應該更清楚地向讀者說明,這也將幫助你簡化步驟。
我可以問你使用Cucumber多久了,你在用什麼語言來實現你的項目?順便說一句,徵求意見不是這種問題,因此正在尋找。你可能會考慮對此進行重新說明,以便有人可以提供客觀答案而不是主觀答案。 –
@ JamesB.Byrne我一直在使用黃瓜約3個月。我們的核心代碼是用Java編寫的,但是我們有用Ruby測試我們所有REST服務的Cucumber。由於我們沒有官方QA團隊,所有開發人員都在撰寫Cucumber測試,我想讓我們更容易。 – user1097108
您可能希望閱讀某些與BDD和黃瓜有關的文檔。你可以看看這個:https://github.com/cucumber/cucumber/wiki/Cucumber-Backgrounder這是我的主題。基本上,你用錯誤的方式來借用一句話:http://www.elabs.se/blog/15-you-re-cuking-it-wrong。 –