3

$httpbackend.flush();只有在有一些待处理的请求时才可以打电话吗?所以我永远不会得到

错误:未刷新的请求:1,2,3,...,n

或者

错误:没有待处理的刷新请求!

4

3 回答 3

2

根据文档$http.pendingRequests,您可以使用一个属性。像这样的东西会起作用:

if($http.pendingRequests.length > 0) {
    $httpBackend.flush();
}

我不确定这是一个非常好的主意,但应该这样做。

于 2015-06-25T05:29:18.513 回答
1

我认为你应该组织你的测试,不要在测试中使用任何“if”。为什么?为了简单易懂地了解实际测试的内容,“if”提供了一种在测试失败时通过测试的方法。

当没有向 API 发出请求时,编写单独的测试函数来测试用例。

阅读测试中的 AAA (Arrange Act Assert) 模式,它将对您有所帮助。

于 2015-06-25T06:27:51.940 回答
1

如果您不“期望”任何请求,您可以将调用http.flush(n)放在 try-catch 块中以忽略异常。

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);
于 2016-06-10T14:19:23.330 回答