Тайм-аут — асинхронный обратный вызов не был вызван в течение тайм-аута, указанного jasmine.DEFAULT_TIMEOUT_INTERVAL. при тестировании кода javascript с defer()

у меня есть следующий код в FormService.js

service.retriveFields = function (Id,UniqueIds) {

        var deferred = $q.defer();

        function success(successResponse) {
            // valid response received
            if (successResponse.data) {
                deferred.resolve(successResponse.data);

            } else {
                // TODO: show error message
                console.log("error");

                deferred.reject(response);
            }
        }

        function error(errorResponse) {
            console.log(errorResponse);
            deferred.reject(errorResponse);
            // TODO: show error message
        }

        // service call
        SomeFactory.retriveFields(Id, UniqueIds)
            .then(success, error);

        return deferred.promise;
    };

Я написал следующий тестовый пример

описать ('retrivFields ()', функция () {

    it('tests function call', function (done) {

        var response = {data: {}};
        var deferred = $q.defer();
        var promise = deferred.promise;
        promise.then(function () {
            resolve(response);
        });

        var Id = "5b7d86e60bf5e5bc21b4309f";
        var UniqueIds = ["5b7d71b822fc4e102c0875d3", "5b7d71ad2d4914162cb12ec6"];



        sinon.stub(SomeFactory, 'retriveFields')
            .returns($q.when(response));

        var promise = FormService.retriveFields (Id,UniqueIds);
        promise.then(function (result) {
            expect(result).toEqual({data :{}});
        })
    });
});

однако я получил следующую ошибку

Ошибка: тайм-аут — асинхронный обратный вызов не был вызван в течение тайм-аута, указанного jasmine.DEFAULT_TIMEOUT_INTERVAL.

Я не понимаю, почему происходит тайм-аут. Я неправильно тестирую?

если да, пожалуйста, помогите мне, как я могу проверить отсрочку


person user_531    schedule 23.08.2018    source источник


Ответы (1)


Похоже, вы звоните done() не для того, чтобы сообщить Jasmine, чтобы он перестал ждать завершения теста.

person Brian Adams    schedule 23.08.2018
comment
@ user_531 дайте мне знать, если это покрывает то, что вам нужно, или если у вас есть дополнительные вопросы - person Brian Adams; 28.08.2018