如何在单元测试中在 httpBackend 服务中正确编写 url

how to properly write url in httpBackend service in unit tests

我想模拟 $httpBackend.whenGet 请求。

我可以将完整的 url 写成字符串,但我无法理解我定义查询表达式的最后一部分:"('120' != 1 AND '106' != 5)"

来自控制台的有效请求示例:

http://localhost:9002/api/application/datapage?dataPageType=application.group.datapage.GroupDataPageQuery&pageSize=-1&propertySelection=groupName,groupId&queryExpression=(%27120%27+!%3D+1+AND+%27106%27+!%3D+5)&startIndex=0

如果我在 $httpBackend.whenGET( '/api/application/datapage?dataPageType=application.group.datapage.GroupDataPageQuery&pageSize=-1&propertySelection=groupName,groupId&queryExpression=(%27120%27+!%3D+1+AND+%27106%27+!%3D+5)&startIndex=0' )

中将其作为字符串传递

我的单元测试出现意外错误

Error: Unexpected request: GET /api/application/datapage?dataPageType=application.group.datapage.GroupDataPageQuery&pageSize=-1&propertySelection=groupName,groupId&queryExpression=('120'+!%3D+1+AND+'106'+!%3D+5)&startIndex=0

我用错误的 queryExpression 格式定义了那个问题。

第一种情况,模拟完整url请求不是那么紧急,我可以在$httpBackend.whenGet服务中使用RegExp来匹配参数而不需要查询。

第二个是我问的,解决方法很简单,使用 \ 转义字符。

所以,结果是:

/api/application/datapage?dataPageType=application.group.datapage.GroupDataPageQuery&pageSize=-1&propertySelection=groupName,groupId&queryExpression=(\'120\'+!%3D+1+AND+\'106\'+!%3D+5)&startIndex=0