3

使用 angular 时如何测试未发出 ajax 请求$httpBackend。我试过使用verifyNoOutstandingRequest()但(至少在 v1.1.5 中)它似乎永远不会导致测试失败。

场景的更多细节

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

4

1 回答 1

1

如果您希望您的测试在发出不应该的请求时失败,请确保您没有expect为它定义方法。如果 Angular 收到非预期的请求,它会抛出错误。

您必须为发出excpect的每个请求编写一个方法,因此您将有一个expect用于第一次调用的方法,该方法getTable实际上应该发出请求,然后如果由于某种原因在此之后尝试请求,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
于 2013-09-19T20:09:20.327 回答