测试没有在角度上进行ajax请求

时间:2013-09-19 19:45:31

标签: javascript ajax unit-testing angularjs

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

方案的更多细节

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

1 个答案:

答案 0 :(得分: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