Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jasmine测试函数返回本机承诺_Javascript_Jasmine_Promise_Es6 Promise - Fatal编程技术网

Javascript jasmine测试函数返回本机承诺

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

我试图编写一个jasmine测试用例来测试一个返回承诺对象的函数

我的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);
    });
});
我的规格如下所示:

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');
完成();
});
});
顺便说一句,避免使用。