angular - 将新创建的 angular cli 项目转换为使用 mocha 框架而不是 jasmine

标签 angular mocha.js angular-cli karma-mocha karma-chrome-launcher

嘿,我用最新的 angular cli 创建了一个新项目。它创建了一个使用 jasmine 作为测试框架的项目。我想用 Mocha 。

我在项目后面添加了所需的插件 https://github.com/arranbartish/angular-cli-seed/blob/master/karma.conf.js

使用命令 ng test enter image description here 运行测试时出现以下错误

有没有人遇到过错误,或者有什么方法可以找出导致此问题的原因。

最佳答案

问题

zone.js 在测试环境中使用时会使用一些“补丁”。为方便起见,zone.js 提供了一个将所有这些补丁捆绑在一起的模块。该模块是 zone.js/dist/zone-testing。这是 @angular/cli 在测试设置中使用的包,它被导入到 src/test.ts 中。问题是 zone.js/dist/zone-testing 假定您正在使用 jasmine 并包含一个 jasmine 补丁。 Jasmine 补丁是导致错误的原因。

修复

要修复它,您只需自己导入每个补丁,而不是使用方便的预打包模块。在 src/test.ts

import 'zone.js/dist/zone-testing';

需要成为

import 'zone.js/dist/long-stack-trace-zone';
import 'zone.js/dist/proxy';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/mocha-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';
import 'zone.js/dist/zone-patch-promise-test';

这些是 zone.js/dist/zone-testing 使用的完全相同的包;但是,它正在导入 mocha-patch 而不是 jasmine-patch

关于angular - 将新创建的 angular cli 项目转换为使用 mocha 框架而不是 jasmine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52176565/

相关文章:

node.js - 在 mocha 初始化和实际测试之间共享变量

angular - 使用 Angular CLI 安装 Dragula

Angular文件上传进度百分比

javascript - 如何在angular2中的选择更改事件中获取值

node.js - 如何在 mocha 测试中使用 TypeScript 声明文件?

javascript - Angular - 从 api 加载后在模板中显示数据

angular-cli - 无法解析依赖项 : npm ERR! peer @angular/compiler @"11.2.8"

angular - 如何根据下拉列表中的值选择来更新 ngx-datatable 中下一个单元格的值?

angular - 如何在 Reactjs 中制作类似 Angular 路由器导出?

node.js - 使用 Mocha 进行 Express 测试失败