我有一个Grails服务,它使用以下可选参数创建条件查询:
List<Car> search(String make = "%", String model = "%", Integer year = null) {
def c = Car.createCriteria()
return c.list() {
if(make) {
like("make", make)
}
if(model) {
like("model", model)
}
if(year) {
eq("year", year)
}
}
}
(也是,这是惯用的方法吗?我对框架还很陌生,我正在尝试找到正确的方法来做这件事)
我想测试是否根据
search
方法的参数值设置了适当的条件过滤器,但没有成功。我尝试了一些变化:
@TestFor(CarService)
@Mock(Car)
class CarServiceSpec extends Specification {
def car = Mock(Car)
void "empty filters"() {
when: service.search()
then:
with(car.createCriteria()) {
0 * like(*_)
0 * eq(*_)
}
}
}
但是我似乎找不到找到关于
CarService
和条件对象之间的交互的断言的方法。我想念什么?
最佳答案
对于Grails中的一种惯用方式,Grails Where查询而不是Criteria查询似乎是更好的选择:
Gorm Where Query
关于unit-testing - 在Grails服务中测试标准创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45590156/