Angular JS Unit Testing $httpBackend spec не имеет ожиданий

У меня есть unit test, в котором единственное ожидание заключается в том, что был сделан http-вызов. Для этого я использую $httpBackend.expect(). Это отлично работает, а unit test терпит неудачу, если этот HTTP-запрос не сделан (что хорошо) и проходит, если был сделан запрос http.

Проблема в том, что даже подумал, что это проходит, Jasmine spec runner показывает, что "SPEC HAY NO EXPECTATIONS" для этого unit test, что заставляет меня думать, что я не использую рекомендуемый способ проверить, что был сделан http-вызов. Как избежать этого сообщения?

Пример теста:

it('should call sessioncheck api', function () {
    inject(function ($injector, SessionTrackerService) {
        $httpBackend = $injector.get('$httpBackend');

        var mockResponse = { IsAuthenticated: true, secondsRemaining: 100 };
        $httpBackend.expect('GET', 'API/authentication/sessioncheck')
            .respond(200, mockResponse);

        SessionTrackerService.Start();

        jasmine.clock().tick(30001);
        $httpBackend.flush();
    });
});

Ответ 1

Я завершаю вызов, чтобы выполнить флеш следующим образом:

expect($httpBackend.flush).not.toThrow();

Я предпочитаю этот подход, потому что в тестовом коде четко указано, что должно произойти, когда вызывается флеш. Например:

it('should call expected url', inject(function($http) {
    // arrange
    $httpBackend.expectGET('http://localhost/1').respond(200);

    // act
    $http.get('http://localhost/1');

    // assert
    expect($httpBackend.flush).not.toThrow();

}));

Ответ 2

Попробуйте удалить jasmine.clock(). tick (30001);

Это избыток в этом коде, если у вас нет тайм-аута внутри метода SessionTrackerService.Start