当前位置: 首页 > 知识库问答 >
问题:

异步测试jasmine超时错误

邓宜年
2023-03-14

jasmine:在jasmine指定的超时内没有调用异步回调。DEFAULT_TIMEOUT_INTERVAL

测试window.post消息指令

用Jasmine async测试postMessage不起作用

我有下面的代码,我正在接收下面的输出。

在jasmine.DEFAULT\u timeout\u 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在父描述函数中定义。正如我所理解的,beforeach应该等到postMessage抛出后再继续执行,但是我得到了超时错误。

谢啦

共有1个答案

路昆杰
2023-03-14

最后我简化了我的测试。我使用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);
});
 类似资料:
  • 我试图为我编写的一些代码编写单元测试,遇到的问题是我希望在执行函数后调用模拟回调,但我的测试失败,因为它从未被调用。 正在测试的功能非常简单: 我怀疑的问题是,由于请求的异步性质,jasmine在API调用中执行模拟回调之前测试期望值。我尝试过使用其他人建议使用的done()和flags,但没有成功。希望能在这方面提供一些指导。

  • 我正在尝试用Jasmine和RequireJS做一些测试。一切都进行得很好,直到我注意到我所描述的函数的上下文出现了问题。 有人知道怎么解决这个吗?

  • 全部: 我对Jasmine测试非常陌生,我想知道的一个关于异步测试的问题是: 有谁能简单解释一下Jasmine是如何知道里面有一个done()函数调用并等待它完成的? 例如,如果我把一些异步调用在之前: Jasmine怎么知道它应该让规范测试等待? 谢谢

  • 问题内容: 如何不通过run / waitsFor块就可以通过此测试? 问题答案: 发送此功能的拉取请求(https://github.com/mhevery/jasmine- node/pull/142 )

  • 问题内容: 在我的节点应用程序中,我正在使用mocha测试我的代码。使用mocha调用许多异步函数时,出现超时错误()。我该如何解决? 问题答案: 您可以在运行测试时设置超时: 或者,您可以通过编程为每个套件或每个测试设置超时: 有关更多信息,请参阅文档。

  • 我想知道哪种方法是测试不返回任何函数(只更改一个字段值)并包含异步调用的最佳方法。 这是我要测试的AngularJS控制器,我调用的服务返回一个promise(总是返回{name:"John"}): 如果sayHello函数不包含异步调用,这将是规范,但它总是失败,因为scope.greeting总是空的。 我将如何使用此规范来处理异步调用?我真的不明白如何以及在哪里使用Jasmine 2.0的“