javascript - 如何监视 Jasmine 中的自定义事件?

标签 javascript testing jasmine

我定义了一个自定义事件。我想用 Jasmine 来窥探它。但我遇到的问题是,当我使用 spyOn 监视该事件时,它失败了。当我监视某些功能时,它工作正常。这是我尝试过的:

describe("Test:", function(){
    it("Expects event will be spied: ", function() {
        var eventSpy = spyOn(window, 'myEvent').andCallThrough();
        expect(eventSpy).toHaveBeenCalled();
        //Also tried this:
        //expect(eventSpy).not.toHaveBeenCalled();
    });
});

所以我尝试了 not.toHaveBeenCalled()toHaveBeenCalled() 但这两种情况都失败了。所以我猜 spyOn 无法监视自定义事件。

*注意:* 我查看了类似问题的其他 SO 答案,但它与点击事件有关。但在我的例子中,这是一个自定义事件,会根据某些条件自动触发。

最佳答案

尝试这样的事情。为我工作

describe("Test:", function(){
it("Expects event will be spied: ", function() {
    var eventSpy = jasmine.createSpy();
    sampleElement.addEventListener('sample event', eventSpy);
    expect(eventSpy).toHaveBeenCalled();

});

关于javascript - 如何监视 Jasmine 中的自定义事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17917068/

相关文章:

javascript - 正则表达式 : capitalize non-ascii character after some special character

测试更新用户配置文件数据

testing - Jasmine /karma 测试 : browser is not defined

javascript - 追加到 Jasmine 中的 'IT'描述名

javascript - 尽管变量在范围内,但 Jasmine 测试用例中 undefined variable

javascript - 在http错误回调中访问 'this'

javascript - 在 Mongoose 模式中使用 getter 格式化数据时出现差异

Django 在测试中加载固定装置(不是来自已安装的应用程序)

javascript - 如何通过一个输入 Angular 发布数组

debugging - 除了测试现有测试的覆盖率之外,是否还有软件故障注入(inject)的用途?