4
我想成爲一名優秀的小程序員,併爲我的Grails 2.2.3應用程序設置單元測試。使用GORM注入的方法的單元測試顯然不是堅持模擬測試數據庫。舉一個例子,這裏是一個測試包括:Grails單元測試無法識別領域類上的.save()
@TestFor(TermService)
@Mock(Term)
class TermServiceTests {
void testTermCount() {
def t = new Term(code: "201310").save(validate: false, flush: true, failOnError: true)
println "Printing Term: " + t.toString()
assert 1 == Term.count() // FAILS
assert service.isMainTerm(t) // FAILS
}
}
我做了一個println
在結束了打印Printing Term: null
,這意味着該期限沒有保存並返回一個期限實例。第一個斷言是錯誤的Term.count()
返回0.
有誰知道這可能是爲什麼?我有一個模擬Term和TermService(通過TestFor註釋,我相信),所以我不太確定爲什麼這不起作用。謝謝!
編輯:這是我的術語類。
class Term {
Integer id
String code
String description
Date startDate
Date endDate
static mapping = {
// Legacy database mapping
}
static constraints = {
id blank: false
code maxSize: 6
description maxSize: 30
startDate()
endDate()
}
}
設置'validate:true'看看你是否缺乏任何約束 – Alidad
'Term'是怎麼樣的? – dmahapatro
@Alidad我確實缺乏一些約束,但我認爲設置'validate:false'意味着驗證不會在保存時觸發,因此我不必填寫所有字段。 @dmahapatro我將Term添加到原始帖子中。 – grantmcconnaughey