我正在为Grails控制器编写一些功能测试,我觉得在测试查询参数时它会变得混乱。
我知道我可以做到这一点,但它看起来很笨重。
Map getParms = [id:1, x:foo, y:bar, z:baz]
RestResponse response = builder.get("http://example.com/api/{id}?x={x}&y={y}&z={z}") {
urlVariables getParams
}
理想情况下,我想:
urlVariables
参数类似的东西:
Map queryParms = [x:foo, y:bar, z:baz]
RestResponse response = builder.get("http://example.com/api/{id}") {
urlVariables id:1
queryVariables queryParams
}
我觉得这会更“干”,更容易阅读/写作。
有谁知道这种机制是否存在?我知道我可以组建一个类来完成它,但如果有现有的实现,我希望避免这种情况。
答案 0 :(得分:3)
您可以执行以下操作。
Map queryParams = [x: 'foo', y: 'bar', z: 'baz']
RestResponse response = builder.get("http://example.com/api/{id}", queryParams) {
urlVariables id:1
}
重载 RestBuilder's
get()以接受三个参数:String url,Map queryParams和RequestCustomizer闭包
答案 1 :(得分:1)
最初使用API时,我感到同样的尴尬。目前我正在做一些更简洁的事情:
RestResponse response = builder.get("http://example.com/api/{id}?x={x}&y={y}", [id:1, x:'foo', y:'bar'])
在groovy SQL中使用命名的sql参数感觉不好,有点相同。