TypeError: Невозможно прочитать свойство 'prototype' из undefined с помощью jest - PullRequest
4 голосов
/ 07 мая 2019

Я использую jest Framework для модульного тестирования моего Angular приложения.У меня проблемы с test.ts файлом с zone.js Я думаю.

Я получаю трассировку стека ошибок

TypeError: Cannot read property 'prototype' of undefined

      3 | import { getTestBed } from '@angular/core/testing';
      4 | import 'zone.js/dist/zone-testing';
    > 5 | import {
        | ^
      6 |   BrowserDynamicTestingModule,
      7 |   platformBrowserDynamicTesting
      8 | } from '@angular/platform-browser-dynamic/testing';

      at __extends (node_modules/zone.js/dist/zone-testing.js:394:73)
      at node_modules/zone.js/dist/zone-testing.js:530:9
      at node_modules/zone.js/dist/zone-testing.js:619:7
      at node_modules/zone.js/dist/zone-testing.js:620:3
      at Object.<anonymous>.NEWLINE (node_modules/zone.js/dist/zone-testing.js:9:65)
      at Object.<anonymous> (node_modules/zone.js/dist/zone-testing.js:12:2)
      at Object.<anonymous> (src/test.ts:5:1

Я ищу способ исправить эту проблему с минимальными изменениями в коде.

Я уже пытался адаптироваться к решениям, приведенным в https://github.com/AlexanderZaytsev/react-native-i18n/issues/233 и
Jest: TypeError: Не могу прочитать свойство undefined без какой-либо удачи.

Кроме того, я пробовал документы, но в нем ничего не указано, или я его пропустил.

Это мой test.ts файл.

import { getTestBed } from '@angular/core/testing';
import 'zone.js/dist/zone-testing';
import {
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';

declare const require: any;

// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

Я использовал compilerOptions,

    "esModuleInterop": true,
    "module": "es2015",

Как ясказал, что я ищу способ исправить это с минимальным изменением кода.Любая помощь приветствуется.

1 Ответ

3 голосов
/ 09 мая 2019

Если вы полностью перешли на Jest, вы можете просто удалить test.ts, так как он больше не требуется, так как вы больше не используете Jasmine и Karma.Вы можете прочитать здесь .

Кроме того, обязательно удалите его ссылку из tsconfig.spec.ts.

Если по какой-то причине вам необходимо сохранить его, вы можете игнорировать файлы test.ts в конфигурации Jest, так какпо умолчанию jest будет тестировать все файлы, заканчивающиеся на spec.ts / js и test.ts / js.

**Default configuration:** 
testMatch: [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]

**Change to:**
testMatch: [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.spec).[jt]s?(x)" ]

Подробнее о настройке Jest можно узнать здесь здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...