2
我打算測試一個where query,但它總是返回一個空列表。如果我刪除owner.name == "Jane"
查詢返回一些內容,但是當我將它放回去時,它不會再返回任何東西。 where
查詢絕對適用於測試應用程序的基本模型搜索,但是,我不確定它是否在包含關聯時起作用。它在run-app
上運行正常,但它似乎在測試應用程序上失敗。難道我做錯了什麼?我需要嘲笑一些東西嗎?我正在使用grails 2.3.9和spock。注意:我在做單元測試。在grails中,我該如何測試關聯的查詢?
Owner owner = Owner.build(name: "Jane")
Pet expectedPet = Pet.build(breed: "Random dog", owner:owner)
when:
def pets = Pet.where {
breed == "Random dog" && owner.name == "Jane"
}.list()
then:
pets.size() == 1
是啊,我的老闆對象的方式比我透露了更多的複雜。它有幾個指向其他對象的字段。我想知道我是否應該嘲笑「where」子句的返回值來解決這個問題,但我想這會打敗測試的目的。我的服務btw中有「where子句」,如果這很重要的話。 :( – user3744677
從更大的角度來看,目前的測試實際上是測試Grails和構建測試數據的功能,我不會擔心測試它們的問題,正如你所說的可能關注核心業務和嘲笑不必要的過程是更好的方法,除非有一些業務邏輯或與應用程序相關的邏輯在測試中 – Alidad
是的,我只是在測試它,因爲where子句沒有返回任何東西,我想親自看看where子句是否在測試,我想知道,你知道如何模擬查詢?我試圖做metaClass的東西,但它不工作..你認爲,像'Pet.where()>> expectedPets'應該工作?我不認爲where子句是一個方法,但我會試試看,當我回家。編輯:我甚至不知道它是一種方法,封閉或什麼。 – user3744677