Javascript jasmine测试函数返回本机承诺
我试图编写一个jasmine测试用例来测试一个返回承诺对象的函数 我的javascript如下所示:Javascript jasmine测试函数返回本机承诺,javascript,jasmine,promise,es6-promise,Javascript,Jasmine,Promise,Es6 Promise,我试图编写一个jasmine测试用例来测试一个返回承诺对象的函数 我的javascript如下所示: var eventUtil = (function() { function ListWidget(config) { var el = document.getElementById(config.elementID); var promise = new Promise(function(resolve, reject) { h
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);
});
});
我的规格如下所示:
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);
});
});
描述(“事件测试套件”,函数(){
beforeach(函数(){
var eventList={};
document.body.insertAdjacentHTML(“beforeed”和“”);
spyOn(窗口,“httpUtil”).and.returnValue({
“get”:函数(){
返回{
然后:函数(回调){
返回回调(eventList);
}
}
}
});
});
它(“应创建事件表”,函数(){
事件列表=`{
“事件”:[{
“姓名”:“A”,
}, {
“名称”:“B”,
}, {
“姓名”:“C”,
}, {
“名称”:“D”,
}]
}`;
var promise=eventUtil.listWidget({
elementID:“测试”,
dataURL:“js/events.json”
});
var listDiv=document.getElementById('list');
expect(listDiv.innerHTML).toContain('Events ABC');
});
之后(函数(){
var listDiv=document.getElementById('list');
listDiv.parentNode.removeChild(listDiv);
});
});
如何测试返回承诺对象的函数eventUtil.ListWidget?将可选的done参数传递给it块
it("shall create event table", function(done) {
eventList = {
"events": [{
"name": "A",
}, {
"name": "B",
}, {
"name": "C",
}, {
"name": "D",
}]
};
eventUtil.listWidget({
elementID: "test",
dataURL: "js/events.json"
}).then(function(){
var listDiv = document.getElementById('list');
expect(listDiv.innerHTML).toContain('<caption>Events ABC</caption>');
done();
});
});
it(“应创建事件表”),功能(完成){
事件列表={
“事件”:[{
“姓名”:“A”,
}, {
“名称”:“B”,
}, {
“姓名”:“C”,
}, {
“名称”:“D”,
}]
};
eventUtil.listWidget({
elementID:“测试”,
dataURL:“js/events.json”
}).然后(函数(){
var listDiv=document.getElementById('list');
expect(listDiv.innerHTML).toContain('Events ABC');
完成();
});
});
顺便说一句,避免使用。