Проблема
zone.js
использует несколько «патчей», когда он используется в тестовой среде. Для удобства zone.js
предоставляет один модуль, который объединяет все эти патчи. Этот модуль zone.js/dist/zone-testing
. Это пакет, который @angular/cli
использует в тестовой настройке, он импортируется в src/test.ts
. Проблема в том, что zone.js/dist/zone-testing
предполагает, что вы используете жасмин, и содержит жасминовую заплату. Жасминовый патч - вот что вызывает вашу ошибку.
Исправление
Чтобы исправить это, вам просто нужно импортировать каждый из патчей самостоятельно, а не использовать удобный, предварительно упакованный модуль. В 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
.