无法加载 TestbedHarnessEnvironment 或如何单击 MatRadioButton



在我的Angular 10应用程序中,为了进行一个单元测试,我需要单击MatRadioButton。

在这里https://material.angular.io/guide/using-component-harnesses我找到了如何做的说明,但当我添加这一行时:

loader = TestbedHarnessEnvironment.loader(fixture);

我开始得到错误:

TypeError:无法读取未定义的属性"nativeElement"在位于Function.loader(http://localhost:9876/karma_webpack/node_modules/@angular/cdk/fesm2015/testing/testbed.js:589:1(在http://localhost:9876/karma_webpack/src/app/maps/maps.component.spec.ts:55:40在在http://localhost:9876/karma_webpack/node_modules/tslib/tslib.es6.js:74:1在新的ZonewarePromise(http://localhost:9876/karma_webpack/node_modules/azone.js/dist/azone常青树.js:960:1(在__awaiter(http://localhost:9876/karma_webpack/node_modules/tslib/tslib.es6.js:70:1(在UserContext中。(http://localhost:9876/karma_webpack/src/app/maps/maps.component.spec.ts:48:26(在ZoneDelegate.invoke(http://localhost:9876/karma_webpack/node_modules/azone.js/dist/azone常青树.js:364:1(在ProxyZoneSpec.prush../node_modules/zone.js/dist/zone-testing.js.ProxyZonepec.onVoke(http://localhost:9876/karma_webpack/node_modules/zone.js/dist/zone-testing.js:292:1(在ZoneDelegate.invoke(http://localhost:9876/karma_webpack/node_modules/zone.js/dist/zone常青.js:363:1(

谷歌搜索除了指示一些将要修复的错误之外没有任何帮助(https://www.gitmemory.com/issue/angular/components/21632/764975917)。

如何解决此问题?或者如何点击MatRadioButton?我应该使用本机元素通过DOM模拟点击吗?

https://www.gitmemory.com/issue/angular/components/21632/764975917有一个很好的答案:

当在异步中创建线束加载程序时,单元测试失败beforeEach和TS的目标是ES2018。StackBlitz演示

这个问题有三种解决办法。

  1. 将对TestbedHarnesEnvironment.loader的调用移到it函数中(演示(
  2. 在beforeEach中使用waitForAsync,而不是异步函数(demo(
  3. 将目标更改为ES2016(演示(

不过,要使用其中一个建议(使用waitForAsync而不是async(,需要将Angular升级到v11。

最新更新