Angular 7:如何在 Jasmine 单元测试中解决 Hammer.js 依赖项

Posted

技术标签:

【中文标题】Angular 7:如何在 Jasmine 单元测试中解决 Hammer.js 依赖项【英文标题】:Angular 7: How to resolve Hammer.js dependency in Jasmine unit test 【发布时间】:2020-11-03 06:31:24 【问题描述】:

在为使用 Material Slider 并依赖 HammerJS 的组件编写单元测试时,我看到此错误 WARN LOG: 'The "slide" event cannot be bound because Hammer.JS is not loaded and no custom loader has been specified.'

我已经导入并添加了依赖的提供者:

import BrowserModule, HAMMER_GESTURE_CONFIG from '@angular/platform-browser';

但我在每次测试中仍然得到相同的错误。如何解决这种依赖关系?

【问题讨论】:

【参考方案1】:

好的,结果证明这是一个明显的解决方法。只是留下这个,以防它对其他人有用,因为在这个错误字符串上的谷歌搜索出现零结果。

只需确保在单元测试中导入依赖项本身即可。在这种情况下,这是hammerjs,而不是您在应用模块中配置的提供程序,以便在您的角度材质组件中使用它。

所以,在您的 spec 测试文件中:

import 'hammerjs';

就是这样。这假定它已安装在您的应用程序中并出现在您的package.json 中,如果它被组件使用,它几乎肯定会这样做。

【讨论】:

以上是关于Angular 7:如何在 Jasmine 单元测试中解决 Hammer.js 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 中使用 Jasmine 使用 *ngIf 指令时,如何对元素是不是可见进行单元测试

如何使用 Jasmine 为私有方法编写 Angular / TypeScript 单元测试

使用 Jasmine 进行 Angular 单元测试:如何删除或修改 spyOn

如何在不使用 Angular 的 spyOn 的情况下检查服务中的方法是不是在 Jasmine 单元测试中被调用?

如何使用 Angular 4 Jasmine 单元测试用例覆盖 IF/ELSE 条件

使用 jasmine / karma 进行 Angular 4 单元测试和 http post mocking - 如何修复