gpt4 book ai didi

javascript - Jasmine 测试 postMessage API

转载 作者:行者123 更新时间:2023-11-28 08:19:58 24 4
gpt4 key购买 nike

我正在尝试在我的脚本中测试异步 postMessage API,该脚本在真实浏览器中运行良好,但为其创建测试相当复杂。为了说明这个情况,我编写了这个简化的测试用例:

describe('calling postMessage asynchronously', function () {
var ctx;
beforeEach(function () {
jasmine.clock().install();
ctx = {
msgHandler:function() {
console.log('msgHandler');
}
};
});
afterEach(function () {
jasmine.clock().uninstall();
});
it('handles a postMessage asynchronously', function() {
window.addEventListener('message', ctx.msgHandler);
spyOnEvent('window', 'message');
spyOn(ctx, 'msgHandler');
setTimeout(function() {
window.postMessage('another bam', '*');
}, 10);
jasmine.clock().tick(11);
expect(ctx.msgHandler).toHaveBeenCalled();
});
});

现在为什么没有调用消息处理程序?

最佳答案

describe('window.postMessage test', function() {
var o;
beforeEach(function(done) {
o = {
f: function() {
o.f2();
},
f2: function() {}
};
window.addEventListener('message', o.f, false);
spyOn(o, 'f2').and.callFake(function() {
done();
});
window.postMessage('another bam', '*');
});
it('works...', function() {
expect(o.f2).toHaveBeenCalled();
});
});

关于javascript - Jasmine 测试 postMessage API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com