在使用 Jasmine Karma 编写测试用例时,我无法涵盖正在执行的处理程序

Posted

技术标签:

【中文标题】在使用 Jasmine Karma 编写测试用例时,我无法涵盖正在执行的处理程序【英文标题】:I'm not able to cover the handler being executed while writing test cases using Jasmine Karma 【发布时间】:2021-07-10 03:18:47 【问题描述】:

我是使用 Jasmine 和 Karma 编写测试用例的新手。

这是我要覆盖的一段代码。

oncreate: () => addWindowResizeListener(() => this._resizeHandler())

下面是我的规范文件中引用上述内容的行

expect(contentPanelFooterBodyVDOM.getAttr("oncreate")).toEqual(Function)

代码覆盖率如下图

如何获得完整的代码覆盖率?

【问题讨论】:

【参考方案1】:

我没有看到您的代码覆盖率,但您必须实际调用您的函数才能获得代码覆盖率。

// spy on the function to be called.
spyOn(something, '_resizeHandler');
// call the function
something.oncreate();
// expect for it to be called
expect(something._resizeHandler).toHaveBeenCalled();

【讨论】:

您好,感谢您的回复。我无法附上代码覆盖率图像,因为我没有足够的分数。但是,我可以覆盖到 addWindowResizeListener。我无法涵盖内部函数 this._resizeHandler()。希望这能提供更多信息。我尝试了上述解决方案,但问题仍然存在。请帮忙。 我猜addWindowResizeListener 会在窗口调整大小时被调用。也许在something.oncreate() 之后,调整窗口大小。

以上是关于在使用 Jasmine Karma 编写测试用例时,我无法涵盖正在执行的处理程序的主要内容,如果未能解决你的问题,请参考以下文章

编写 Karma-Jasmine 单元测试用例时出现“错误:没有路由器提供程序”

不加载 karma-jasmine 框架中生成的测试用例

Angular - Jasmine/karma - 订阅 lambda 表达式未执行

用 angularjs karma 和 jasmine 编写 TDD

使用 jasmine 和 karma 进行单元测试时形成数组错误

单元测试 typescript 指令模板 karma-jasmine,html 未定义