我正在寫一個簡單的集成測試,我打算模擬刪除失敗。如何覆蓋gorm刪除方法進行測試?
控制器只需從數據庫中提取記錄並將其刪除,如下所示。
def deleteItem(id){
def item = Item.get(id)
item.delete()
}
現在,我想模擬刪除失敗與下面的代碼
void testDeleteItem_FailDeleteFlushSaveFail(){
Item.metaClass.delete = { Map params ->
throw new ValidationException("Failed!!")
}
def model = controller.deleteItem(mp.id)
assertEquals controller.flash.message, "Sorry an error occured when deleting!!"
GroovySystem.metaClassRegistry.removeMetaClass(Item.class)
}
但由於方法不更換測試失敗。即在刪除時不會引發異常。我猜測問題出在我的元類中。我怎樣才能使它在調用刪除時拋出異常?我感謝任何幫助!謝謝!