我已经阅读并尝试过在茉莉花中进行异步测试的不同内容,但没有任何成功。 jasmine: Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL
Testing window.postMessage directive
Testing postMessage with Jasmine async doesn't work
我有以下代码,并且我收到了以下输出。
在指定的超时时间内未调用异步回调 jasmine.DEFAULT_TIMEOUT_INTERVAL
describe('asynchronous tests', function () {
var value;
beforeEach(function (done) {
spyOn(myService.$rootScope, '$broadcast').and.callFake(function(){
done();
});
window.parent.postMessage({message:'event'}, '*');
});
it('Should support async execution test preparation and expectation', function(){
expect(myService.$rootScope.$broadcast).toHaveBeenCalled();
});
});
myService在父描述函数中定义。据我所知,我的beforeEach应该等到postMessage被抛出然后继续执行,但是我得到了超时错误。
由于
答案 0 :(得分:1)
最后我简化了测试。我使用eventDispatcher手动触发我的服务正在侦听的事件并忘记window.postMessage()。原因是我测试的是服务而不是沟通,因此事件的来源并不重要。
it('my test', function(){
var event = new CustomEvent('message');
event.origin = 'http://localhost:33333';
event.data = {message: 'eventData'};
spyOn(myService.$rootScope, '$broadcast');
myService.subscribeEvent();
window.dispatchEvent(event);
expect(myService.$rootScope.$broadcast).toHaveBeenCalledWith('eventData',undefined);
});