Ich schreibe einen einfachen Integrationstest, bei dem ich Löschfehler simulieren möchte.Wie überschreiben gorm delete-Methode zum Testen?
Der Controller zieht den Datensatz einfach aus der Datenbank und löscht ihn wie unten gezeigt.
def deleteItem(id){
def item = Item.get(id)
item.delete()
}
Nun, ich will Ausfall simulieren löschen mit Code folgenden
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)
}
Aber der Test schlägt fehl, da das Verfahren nicht ersetzt wird. Die Ausnahme wird nicht auf delete geworfen. Ich vermute, dass das Problem in meiner Metaklassenformulierung liegt. Wie kann ich es so machen, dass beim Löschen eine Ausnahme ausgelöst wird? Ich schätze jede Hilfe! Vielen Dank!