Grails 单元测试 - 在每个闭包中模拟 findAllBy() 方法
Grails Unit testing - mock findAllBy() method with each closure
我想对服务中的功能进行单元测试 class。
服务 class 如下所示:
class FooService{
Double getFoo(SomeClass class){
Double returningValue = 0.0
String parameter
SomeClass.findAllByCodeLike(parameter).each{
Double amount = someOtherFooServiceMethod(it,it.someClassAttribute?.intValue())
if(amount){
returningValue += amount;
}
}
}
}
我知道如何模拟 SomeClass.findAllByCodeLike(参数)。我用 SomeClass.metaClass.static.findAllByCodeLike() 嘲笑它并给这个函数赋值。
但我不知道如何模拟 .each{}。
有办法吗?
到目前为止,我正在模拟大量域 classes 来测试此方法,并将域 classes 保存到内存数据库中。如果我找到一种方法来模拟 SomeClass.findAllByCodeLike(parameter).each{...} 我可以通过大量代码减少 TestClass。
您不必嘲笑 each{}
。你应该简单地让你的 findAllByCodeLike
模拟 return 值列表:
SomeClass.metaClass.static.findAllByCodeLike = { code -> [ new SomeClass(...), new SomeClass(...), ... ] }
//...
SomeClass.findAllByCodeLike(parameter).each{
doStuff it
}
我想对服务中的功能进行单元测试 class。
服务 class 如下所示:
class FooService{
Double getFoo(SomeClass class){
Double returningValue = 0.0
String parameter
SomeClass.findAllByCodeLike(parameter).each{
Double amount = someOtherFooServiceMethod(it,it.someClassAttribute?.intValue())
if(amount){
returningValue += amount;
}
}
}
}
我知道如何模拟 SomeClass.findAllByCodeLike(参数)。我用 SomeClass.metaClass.static.findAllByCodeLike() 嘲笑它并给这个函数赋值。
但我不知道如何模拟 .each{}。 有办法吗?
到目前为止,我正在模拟大量域 classes 来测试此方法,并将域 classes 保存到内存数据库中。如果我找到一种方法来模拟 SomeClass.findAllByCodeLike(parameter).each{...} 我可以通过大量代码减少 TestClass。
您不必嘲笑 each{}
。你应该简单地让你的 findAllByCodeLike
模拟 return 值列表:
SomeClass.metaClass.static.findAllByCodeLike = { code -> [ new SomeClass(...), new SomeClass(...), ... ] }
//...
SomeClass.findAllByCodeLike(parameter).each{
doStuff it
}