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

时间:2016-10-14 07:25:29

标签: javascript angularjs unit-testing https httpbackend

我想模仿$httpBackend.whenGet请求。

我可以将完整的url写成字符串,但是我不能用最后一部分来定义queryExpression:"('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格式错误定义了这个问题。

1 个答案:

答案 0 :(得分:0)

第一种情况是,为请求模拟完整网址并不是那么紧急,我可以在$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