测试ajax请求是否尚未以角度发出

Testing that an ajax request hasn't been made in angular

本文关键字:ajax 请求 是否 测试      更新时间:2023-09-26

我怎样才能测试在使用角度$httpBackend时没有发出ajax请求。我尝试使用verifyNoOutstandingRequest()但是(至少在v1.1.5中)它似乎从未导致测试失败。

方案的更多详细信息

我的数据库模块使用 ngResource 连接到我的服务器端数据库。我已经设置了它,以便 GET all 是缓存的客户端,因此只有对我的 getTable('tableName') 方法的第一次调用才能触发 ajax 请求。因此,有问题的测试需要验证第一个调用是否发出 ajax 请求,但第二个调用没有

如果您希望测试在发出不应失败的请求时失败,只需确保不要为其定义expect方法即可。如果 Angular 收到意外的请求,它将抛出错误。

您必须为每个请求编写一个excpect方法,因此对于第一次调用应该实际发出请求的getTable,您将有一个expect,然后如果由于某种原因,之后尝试请求,Angular 将抛出错误,您的测试将失败。

因此,测试的主体将如下所示:

$httpBackend.expectGET("request_url");
getTable("tableName");
$httpBackend.flush();
//no error because it was expecting a request
getTable("tableName"); //will throw an error if it actually tries to make a request