我正在尝试编写一个jasmine测试用例来测试一个返回promise对象的函数。
我的javascript看起来像这样:
var eventUtil = (function() {
function ListWidget(config) {
var el = document.getElementById(config.elementID);
var promise = new Promise(function(resolve, reject) {
httpUtil(config.dataURL).get(null).then(function(data) {
data = JSON.parse(data);
var events = data.events;
resolve("success");
}, function(error) {
reject("error");
});
});
return promise;
}
return {
listWidget: ListWidget
}
})()
我的规格如下:
describe("Test suite for events", function() {
beforeEach(function() {
var eventList = {};
document.body.insertAdjacentHTML("beforeend", "<div id='list'></div>");
spyOn(window, "httpUtil").and.returnValue({
'get': function() {
return {
then: function(callback) {
return callback(eventList);
}
}
}
});
});
it("shall create event table", function() {
eventList = `{
"events": [{
"name": "A",
}, {
"name": "B",
}, {
"name": "C",
}, {
"name": "D",
}]
}`;
var promise = eventUtil.listWidget({
elementID: "test",
dataURL: "js/events.json"
});
var listDiv = document.getElementById('list');
expect(listDiv.innerHTML).toContain('<caption>Events ABC</caption>');
});
afterEach(function() {
var listDiv = document.getElementById('list');
listDiv.parentNode.removeChild(listDiv);
});
});
如何测试返回promise对象的函数eventUtil.ListWidget?
答案 0 :(得分:1)
将可选的done参数传递给它。
{{1}}