0
我修改了代碼從here看起來非常像我有的代碼,並試圖創建單元測試。雖然我會就像問一下「測試這個最好的方法是什麼」,我會很滿意的任何的方式來創建一個體面的單元測試!我查看了Spock,GroovyTestCase和GMock,而他們每個人都可以創建這樣的測試,我發現在所有情況下缺乏這樣一個示例的文檔。如何在Groovy中使用嵌套閉包進行單元測試(模擬類)?
class Searcher {
def http = new HTTPBuilder('http://ajax.googleapis.com')
def _executeSearch = { searchQ -> {
req ->
uri.path = '/ajax/services/search/web'
uri.query = searchQ
requestContentType = URLENC
response.success = { resp, reader ->
assert resp.statusLine.statusCode == 200
reader.text
}
response.failure = { resp -> println "FAILURE! ${resp.properties}"
resp.statusLine.statusCode }
}
}
def executeSearch(query) {
// http.setHeaders(Accept: 'application/json') // I want JSON back, but this not important
http.request(GET, _executeGetCommand(query))
}
}
我想要什麼/需要做的就是以這樣的方式來嘲笑「HTTP」,我可以測試:
1. uri.query is getting properly set via the passed in data
2. calls to response.success return mocked test data
3. calls to failure get executed and return the failure code
我可能接近這個完全不正確,將是開放的「正確的方式「去進行單元測試這樣的代碼。請忍受我,雖然這對我來說是新的!
決定使用'spock'是一個明智的決定。你還在Spock中試過了什麼? – dmahapatro
搞笑,我以爲你會說這是一個「非常合乎邏輯」的決定 - 哈哈。沒有嘗試過任何東西,因爲我發現的每個例子都是基本上微不足道的東西,無法像上面那樣找到任何示例規範。 – JoeG