Angular mock $httpBackend give No pending request to flush

半城伤御伤魂 提交于 2019-12-01 14:59:54

The _$httpBackend_ has nothing to flush because you don't make any http request in your test.

You need to invoke some code that make an http request.

Then, once something somewhere made an http request in your test, you can call the flush method so that a response is provided for the request that has been made.

Something like:

it('should fetch list of users', function(){

    // Do something that will make an http request
    MyService.getAllUser(function ...) // for example

    // Then provide a response for the http request that 
    // has been made when getAllUser was called
    $httpBackend.flush();

    // Check the expected result.
    expect(something).toBe('Bob');
});

Same issue happened to me and the problem was not that I was not making a request but because the request I was making was different to the expected one:

For example I have defined this expectation:

mockBackend.expectGET("http://myapi.com/001").respond("RESULT");

And I was requesting this other URL:

http://myapi.com/002

Very confusing error message, no really easily related with the underneath problem.

I had the same issue, because I neglected to define a response for each expected request. With no response, there becomes nothing to flush. Also the http promise would never resolve or fail.

I've got the same exception because I used ngMockE2E module instead of ngMock module. Even calling $rootScope.$digest() didn't help.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!