$httpBackend.flush()需要在每个测试上调用:Jasmin AngularJs单元测试

$httpBackend.flush()需要在每个测试上调用:Jasmin AngularJs单元测试,angularjs,unit-testing,karma-jasmine,httpbackend,Angularjs,Unit Testing,Karma Jasmine,Httpbackend,我的问题很简单 afterEach (function () { $httpBackend.verifyNoOutstandingExpectation (); $httpBackend.verifyNoOutstandingRequest (); }); 为什么每次(函数(){})之后,$httpBackend.flush()不能放在内?? 因为当我有几个测试用例时,每次我都需要调用它 describe("test1", function(){ it

我的问题很简单

 afterEach (function () {
        $httpBackend.verifyNoOutstandingExpectation ();
        $httpBackend.verifyNoOutstandingRequest ();
    });
为什么每次(函数(){})之后,
$httpBackend.flush()
不能放在
内??
因为当我有几个测试用例时,每次我都需要调用它

describe("test1", function(){
it('1', function(){
$httpBackend.flush()
})
it('2', function(){
$httpBackend.flush()
})
it('3', function(){
$httpBackend.flush()
})
})
甚至我尝试在每个块之后将
$httpBackend.flush()
放入内部,但我开始得到错误“错误:超时-在jasmine.DEFAULT\u Timeout\u INTERVAL指定的超时内未调用异步回调。 “

还有其他方法吗?
$httpBackend.flush()


谢谢

$httpBackend.flush应在测试中调用,而不是在测试后调用。
它是测试的一部分,因此在测试之后执行它是没有意义的

flush
模拟将请求发送到服务器,然后可能的
httpBackend.expectXX
方法将失败或通过。您可能还需要检查其他条件

如果您想编写一个helper方法来避免一直调用它,您可以编写如下内容,例如:

function executeRequestAndFlush(requestToExecute) {
   requestToExecute();
   $httpBackend.flush();
}

您可以添加代码段吗?flush()的目的是让后端发送对其接收到的请求的响应,并能够在测试后验证对响应的期望。因此,在测试后调用flush没有多大意义。感谢您的解释,但我们仍然可以避免调用$httpBackend.flush()多次??这个问题真的没有意义。当你需要调用flush时,你选择调用它,因为你需要从假后端获取响应,因为你需要对响应做出断言。你似乎认为调用flush是一件麻烦的事情,即使你不想做,但这不是ca现在,如果您发布了一个真实的测试示例,并解释了您希望在该测试中实现什么,我们可以提供更多帮助。感谢您的回答,但我不希望每次都调用该方法