用于postMessage事件失败的Jasmine spy()
Jasmine spy() for postMessage event failing
我做了一个简单的Jasmine测试,从postMessage调用间谍,但是失败了。
我在这里错过了什么?
it('Should trigger message event', function () {
var spy = jasmine.createSpy('message');
window.addEventListener('message', function (e) {
console.log(Object.keys(e), e.data); // this logs as expected
spy();
});
window.postMessage('test', '*');
expect(spy).toHaveBeenCalled();
});
http://jsfiddle.net/4L9Vc/
postMessage
异步运行,因此在消息发布和事件触发之前,您将达到您的期望。
我重写了你的测试像这样,它工作得很好:
describe('Message', function () {
var spy;
beforeEach(function() {
spy = jasmine.createSpy('message');
window.addEventListener('message', function (e) {
console.log(Object.keys(e), e.data);
spy();
});
window.postMessage('test', '*');
});
it('Should trigger message event', function () {
expect(spy).toHaveBeenCalled();
});
});
它完成了这里的工作,但我不知道它是否是最好的解决方案,因为Jasmine为我们提供了测试异步方法的能力:2.0之前,您可以使用runs
, waits
和waitsFor
方法(源),2.0+您可以使用done
方法(源)。
窗口。当调用postMessage方法时,当任何必须执行的挂起脚本完成时,将在目标窗口上调度MessageEvent。
相关文章:
- 使用jasmine模拟对服务器的调用
- 为什么jasmine期望不验证是否抛出了错误
- 模拟chrome.storage.local函数使用Jasmine
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- 为什么spyOn"停止函数“”的所有执行;Jasmine(要求澄清Jasmine 2.2间谍文件)
- 可以't在Jasmine中调用Javascript函数
- Jasmine单元测试在监视服务方法时失败
- 如何使用Jasmine测试Knockout.js点击绑定
- Sinon Spy不使用Javascript调用或应用程序
- 如何在jasmine测试中为有角度的项目注入依赖项
- 仅首先需要使用jasmine从节点添加一个文件
- 使用Jasmine捕获传递给不同JavaScript文件中函数的参数
- 什么'与Jasmine相比,使用Sinon.js的优势是什么;内置于间谍
- 测试iFrame的位置.href是在jasmine单元测试中设置的
- Jasmine在全局窗口对象上创建本地JS函数的Spy
- Spy on setTimeout and clearTimeout in Karma and Jasmine
- 如何在单元测试中通过jasmine spy向angular控制器返回被拒绝/失败的承诺
- Jasmine spy没有存根这个函数
- 用于postMessage事件失败的Jasmine spy()
- 有没有办法巩固'spy '在Jasmine测试中设置