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

Kar*_*tik 3 mocha.js karma-mocha angular-cli karma-chrome-launcher angular

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

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

使用命令 ng test 运行测试时出现以下错误在此处输入图片说明

有没有人遇到过错误,或者有没有办法找出是什么导致了这个问题。

小智 5

问题

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

修复

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

import 'zone.js/dist/zone-testing';
Run Code Online (Sandbox Code Playgroud)

需要成为

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';
Run Code Online (Sandbox Code Playgroud)

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