模拟$ httpBackend正则表达式不匹配

Vin*_*ent 13 angularjs

我正在尝试将网址与正则表达式匹配.但是后面的正则表达式并不匹配.

$httpBackend.whenGET('/^rest\/find-reservations\?.*/)').respond(function () {
        return [200, ['succes'], {}];
    });
Run Code Online (Sandbox Code Playgroud)

我不断得到以下错误:

Error: Unexpected request: GET rest/find-reservations?end=1421424299193&reservationClass=Reservation&start=1358352299193
No more request expected
Run Code Online (Sandbox Code Playgroud)

当我将正则表达式更改为绝对字符串'/ find-reservations'时,触发了whenGET.为什么是这样?

编辑:我在嘲笑后端.http://plnkr.co/edit/VF4KbZO3FvngWQsiUcte?p=preview 以下plnkr适用于静态URL和部分.但它不适用于上述情况.

Ila*_*mer 15

如果你想匹配这个网址:

"休息/找到的预约?到底= 1421424299193&reservationClass =预订和启动= 1358352299193"

使用此代码:

$httpBackend.whenGET(/^rest\/find-reservations\?.*/).respond(function () {
  return [200, ['success'], {}];
});
Run Code Online (Sandbox Code Playgroud)

如果您看到此错误 Error: Unexpected request:

这可能是出于某些原因:

  • 你忘了$httpBackend.expectGET(url).
  • 顺序expectGET应该与顺序相同requests.
  • $httpBackend.verifyNoOutstandingExpectation()之前打过电话$httpBackend.flush().

它完全没有关系$httpBackend.whenGET.

来自$ httpBackend文档:

请求期望提供了一种方法,可以对应用程序发出的请求进行断言,并为这些请求定义响应.如果未作出预期请求或以错误的顺序进行,则测试将失败


gka*_*pak 9

您的代码有两个问题:

  1. 将表达式括起来'...'使其成为一个字符串(即使它看起来像一个正则表达式.

  2. 您必须/在模式中包含前导.


您的代码应该像这样修改:

$httpBackend.whenGET(/^\/rest\/find-reservations\?.*/).respond(function () {
    return [200, 'success', {}];
});
Run Code Online (Sandbox Code Playgroud)