在使用 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 单元测试用例时出现“错误:没有路由器提供程序”
Angular - Jasmine/karma - 订阅 lambda 表达式未执行
用 angularjs karma 和 jasmine 编写 TDD