making domain.save(failOnError:true) fail when doing integration tests
making domain.save(failOnError:true) fail when doing integration tests
我故意导致 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)
}
但是,当我为保存方法设置 failOnError 属性 时,这会失败。我如何使用 metaClass 更改保存以使保存(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() 的失败,我们需要一种方法来模拟保存失败。所以,如果有人对如何使用或不使用保存参数(如保存(flush:true),保存(failOnError:true))进行模拟保存有答案,我将不胜感激。谢谢!
你的第一个 metaClassing 实例 save() 没问题。
当尝试对 save(failOnError: true) 版本进行元分类时,您必须更改元分类语句以匹配实际使用方法的签名。 "save()" 调用与 "save(failOnError:true)" 调用不同。试试这个(我怀疑参数是严格类型的,所以我使用的是 Map。:
Cat.metaClass.save = { Map map ->
throw new Exception("failOnError is true")
}
我故意导致 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)
}
但是,当我为保存方法设置 failOnError 属性 时,这会失败。我如何使用 metaClass 更改保存以使保存(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() 的失败,我们需要一种方法来模拟保存失败。所以,如果有人对如何使用或不使用保存参数(如保存(flush:true),保存(failOnError:true))进行模拟保存有答案,我将不胜感激。谢谢!
你的第一个 metaClassing 实例 save() 没问题。
当尝试对 save(failOnError: true) 版本进行元分类时,您必须更改元分类语句以匹配实际使用方法的签名。 "save()" 调用与 "save(failOnError:true)" 调用不同。试试这个(我怀疑参数是严格类型的,所以我使用的是 Map。:
Cat.metaClass.save = { Map map ->
throw new Exception("failOnError is true")
}