只有在有待处理的请求时才可以调用$httpbackend.flush();
吗?
所以我永远不会得到
错误:未刷新的请求:1,2,3,...,n
或者
错误:没有待处理的待处理请求!
答案 0 :(得分:2)
根据documentation,您可以使用$http.pendingRequests
属性。像这样的东西会起作用:
if($http.pendingRequests.length > 0) {
$httpBackend.flush();
}
我不确定这是一个非常好的主意,但应该这样做。
答案 1 :(得分:1)
我认为你应该组织你的测试,不要使用任何“if”内部测试。 为什么? 为了简单易懂地理解实际测试的内容,“if”提供了一种在失败时通过测试的方法。
当没有向API发出请求时,将单独的测试函数写入测试用例。
在测试中阅读AAA(Arrange Act Assert)模式,它会对你有帮助。
答案 2 :(得分:1)
如果你没有"期待"您可以在try-catch块中调用http.flush(n)
来忽略异常的任何请求。
http.whenGet(/* .. */).respond(/*..*/); // maybe implementation needs some data
service.doSomething();
try { http.flush(99); } // resolve all the possible requests my service might have to do
catch(e) {}
expect(service.isAwesome).toBe(true);