我有一个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)
}
}
}
(另外,这是用grails做这个的惯用方法吗?我对框架很新,我试图找到正确的做事方式)
我想测试是否根据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
和标准对象之间的相互作用进行断言。
我错过了什么?