我正在写一个简单的集成测试,我打算模拟删除失败。如何覆盖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)
}
但由于方法不更换测试失败。即在删除时不会引发异常。我猜测问题出在我的元类中。我怎样才能使它在调用删除时抛出异常?我感谢任何帮助!谢谢!