Я пытаюсь смоделировать 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')
Что я здесь не так делаю?