如何在使用angular $httpBackend
时测试是否尚未执行ajax请求。我尝试过使用verifyNoOutstandingRequest()
但是(至少在v1.1.5中)它似乎永远不会导致测试失败。
我的数据库模块使用ngResource连接到我的服务器端数据库。我已经设置好了,所以GET all都是缓存的客户端,因此只有第一次调用getTable('tableName')
方法才能触发ajax请求。因此,有问题的测试需要验证第一个调用是否发出ajax请求,但第二个调用不是
答案 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