【发布时间】:2016-11-06 09:40:49
【问题描述】:
我正在编写一个简单的集成测试,我打算在其中模拟删除失败。
控制器只需从数据库中提取记录并将其删除,如下所示。
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)
}
但测试失败,因为方法没有被替换。即删除时不会引发异常。我猜问题出在我的元类公式中。我怎样才能使它在调用 delete 时引发异常?我很感激任何帮助!谢谢!
【问题讨论】:
标签: grails integration-testing