Как получить метод then функции покрытия в модульном тесте JASMINE - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь смоделировать API в моем коде, чтобы покрыть его в моем модульном тесте JASMINE, но некоторые функции API возвращают функцию с then, что я не могу получить доступ / закрытый блок возврата в моем модульном тесте.

Я смоделировал все обратные вызовы параметров API

API.ComponentName = {
    render: function() {

        return {

                onClick: function(event) {
                    event.somename = 'data';
                },
                process: function() {
                    return API.request.post(data).then(function() {
                        **//section needs to be convered.**
                        return someval;
                    });
                },
                onCancel: function() {
                    // Moked function
                }
            };
        }
    };

API.request = {
        post: function() {

        }
    }

Из приведенного выше кода я не могу покрыть блок возврата метода процесса в моем тестовом примере.Я могу получить доступ к другим методам.

Фактический вызов API API.ComponentName.render(options), и мой регистр блока

function mockProcess(obj) {

        return jasmine.any(Function);
    }

it('Generate API call request', function() {
        var APISpy = spyOn(API.componentName, 'render').and.callFake(function() {
            options.onClick({});
            options.onAuthorize({});
            options.process(mockProcess());
        });

        myApp.API.init(); // some app functions inits API

        expect(API.componentName, 'render').toHaveBeenCalledWith({
            onClick: jasmine.any(Function),
            onCancel: jasmine.any(Function),
            process: jasmine.any(Function)
        });
    });

В процессе я получаю сообщение об ошибке типа

undefined is not an object (evaluating 'API.request.post(sampleargs).then')

Что я здесь не так делаю?

...