我有一個Grails的服務,做了where
這樣的查詢:單元測試GORM調用與閉合
List<Car> search(Long makeId = null) {
Car.where {
join("make")
if(makeId) {
make.id == makeId
}
}.findAll()
}
我試圖單元測試與斯波克這樣的:
def setup() {
GroovyMock(Car, global: true)
}
void "test search"() {
when:
service.search()
then:
1 * Car.where {}
}
但是,我似乎無法找到一種方法來測試閉包的內容。
我可以得到測試通過驗證1 * Car.where(_)
通過,但我怎麼能在封閉的內容的斷言,即認爲join
被稱爲並在需要時make.id
約束只規定?
我更傾向於將測試搜索方法來代替。 在規範中,您將設置只有在指定了makeId時才返回的數據。因此,通過兩個'when/then'塊,您可以測試是否按預期提供makeId。 – bassmartin