【发布时间】:2019-05-16 17:45:49
【问题描述】:
我正在为 post 方法调用外部 API 方法,但我无法使用 jasmine 覆盖它。
我已经使用 window 对象模拟了外部 API 函数,并创建了一个函数来通过返回一些对象来模拟回调。但没有任何帮助。
Javascript
function loadApi() {
extAPI.load({
email: 'testEmail.test.com'
}, function(resultObject) {
if(resultObject.approved) {
// callback with result object - not able to cover this
}
});
}
Spec.js 和模型
beforeEach(function() {
function mockLoadCallback() {
var object = {
approved: false
};
return object;
}
widnow.extAPI = {
load: function(object, Function) {
var deferred = $.Deferred();
deferred.resolve(mockLoadCallback);
return deferred.promise();
}
}
});
it('load the external API response', function() {
var loadSpy = spyOn(extAPI, 'load');
loadApi();
expect(loadSpy).toHaveBeenCalled();
});
应该覆盖加载回调中的语句和逻辑,但甚至不应该在间谍之后调用。我在这里做错了什么。
【问题讨论】:
标签: javascript unit-testing jasmine mocking