angular - fakeAsync() 测试助手需要错误 : zone-testing. js,但找不到。使用 serenityJS+Jasmine 在 Angular webapp 上运行测试时

标签 angular unit-testing jasmine serenity-js

我正在尝试使用 serenityJS + Jasmine 在 Angular Web 应用程序上运行组件测试,但遇到以下错误。知道如何解决这个问题吗?

Message:
Error: zone-testing.js is needed for the fakeAsync() test helper but could not be found.
        Please make sure that your environment includes zone.js/dist/zone-testing.js
堆:
错误:fakeAsync() 测试助手需要 zone-testing.js,但找不到。
请确保您的环境包含 zone.js/dist/zone-testing.js
在 resetFakeAsyncZone (C:\Users\zhenweiwong\Desktop\serenityjsframework\packages\core\testing\src\fake_async.ts:25:9)
在用户上下文。 (C:\Users\zhenweiwong\Desktop\serenityjsframework\packages\core\testing\src\before_each.ts:26:5)

在 processImmediate (internal/timers.js:439:21)
在 process.topLevelDomainCallback (domain.js:131:23)
信息:
错误:在这个配置中 Angular 需要 Zone.js
堆:
错误:在这个配置中 Angular 需要 Zone.js
在新的 NgZone (C:\Users\zhenweiwong\Desktop\serenityjsframework\packages\core\src\zone\ng_zone.ts:129:13)
在 TestBedViewEngine._initIfNeeded (C:\Users\zhenweiwong\Desktop\serenityjsframework\packages\core\testing\src\test_bed.ts:409:9)
在 TestBedViewEngine.createComponent (C:\Users\zhenweiwong\Desktop\serenityjsframework\packages\core\testing\src\test_bed.ts:599:10)
在 Function.TestBedViewEngine.createComponent (C:\Users\zhenweiwong\Desktop\serenityjsframework\packages\core\testing\src\test_bed.ts:245:36)
在用户上下文。 (C:\Users\zhenweiwong\Desktop\serenityjsframework\jasmine-test\spec\app1.component.spec.ts:32:29)

最佳答案

你好,回答有点晚,但我在这里留下评论以供将来引用:
错误来源
就我而言,错误是在 中发现的。 test.ts 文件。当使用命令 创建时,此文件设置在 Angular 规范文件中默认使用的 TestBed 配置。 ng 生成组件 my-component .
解决方案
修复是确保以下导入位于文件的顶部
test.ts 在任何其他导入之前:

import 'zone.js';
import 'zone.js/testing';
小心可能会改变这些导入顺序的配置,因为它可能会导致再次破坏测试。这就是为什么您可能会通过 test.ts 文件:
  • 停用 onSave 优化导入。
  • 避免运行 Prettier , Beautify或其他重新组织导入的代码样式格式化程序。
  • 检查预提交钩子(Hook),如 Husky格式化文件并重新组织导入。

  • 进一步的故障排除
    您可能还想查看是否存在以下导入:
    import 'zone.js';
    import 'zone.js/dist/async-test.js';
    import 'zone.js/dist/proxy.js';
    import 'zone.js/dist/sync-test';
    import 'zone.js/dist/jasmine-patch';
    
    在此 thread 中使用其他方法解决了相同的问题.

    关于angular - fakeAsync() 测试助手需要错误 : zone-testing. js,但找不到。使用 serenityJS+Jasmine 在 Angular webapp 上运行测试时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67414283/

    相关文章:

    angular - 测试 Angular 2 组件时如何模拟 @injected 服务?

    node.js - 在 Angular 4 中使用 Node 模块(网站抓取工具)使用失败

    angular - 如何动态地为 ag-grid 提供 ID?

    unit-testing - Ember 单元测试模板

    unit-testing - 单元测试DTS包

    javascript - 类型错误 : Expected throat size to be a number but got undefined

    jasmine - jasmine-jquery 中的 toContainHtml() 与 toHaveHtml()

    javascript - 如何在 typescript 中使用 Angular 十进制管道

    javascript - ngFor 与 JSON 对象 - Angular 2 ngmodel 视角

    reactjs - 如何解决testing-library-react中的 “update was not wrapped in act()”警告?