我正在尝试在我的代码中模拟一个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() {
}
}
从上面的代码中,我无法在我的测试案例中介绍process方法的返回块。我可以访问其他方法。
对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')
这是怎么了?