【发布时间】:2016-11-08 06:55:32
【问题描述】:
我故意导致 cat 实例失败。以下测试通过。
void testSomething() {
Cat.metaClass.save = {
throw new Exception("Asdasd")
}
shouldFail(Exception){
Cat cat = new Cat(name: "asd")
cat.save()
}
GroovySystem.metaClassRegistry.removeMetaClass(Cat.class)
}
但是,当我为 save 方法设置 failOnError 属性时,这会失败。如何使用 metaClass 更改保存以使 save(failOnError:true) 抛出异常?我很感激任何帮助!谢谢!
void testSomething() {
Cat.metaClass.save = {
throw new Exception("Asdasd")
}
shouldFail(Exception){
Cat cat = new Cat(name: "asd")
cat.save(failOnError: true)
}
GroovySystem.metaClassRegistry.removeMetaClass(Cat.class)
}
进行相同测试的另一种方法是将无效参数传递给域实例,以便验证失败并引发异常,但这并非在所有情况下都有效,因为在某些情况下域实例不需要任何参数用户给的。因此,为了在这种情况下模拟域 save() 的失败,我们需要一种模拟保存失败的方法。因此,如果有人回答如何使用或不使用 save(flush:true)、save(failOnError:true) 等保存参数来模拟保存,我将不胜感激。谢谢!
【问题讨论】:
标签: grails integration-testing