Ошибка при выполнении тестов Jest в рабочей области @nrwl/nx

#angular #jestjs #nrwl-nx

#угловой #jestjs #nrwl-nx

Вопрос:

Недавно я начал преобразовывать свои угловые приложения и библиотеки в рабочее пространство @nrwl/nx. Приложения работают нормально, однако, когда дело доходит до моих шутовских тестов, я получаю некоторые странные ошибки.

Рабочее пространство представляет собой стандартное рабочее пространство NX, созданное с

 npx create-nx-workspace  

Никаких изменений в сгенерированных файлах конфигурации jest.

При запуске тестов для одной из моих библиотек с

 nx test my-lib-name  

простые тесты проходят нормально. Однако, когда тест импортирует некоторые внешние модули, такие как, например, @ngx-translate/core/TranslateModule или другие модули начальной загрузки ngx, я получаю следующую ошибку:

Неожиданное значение «TranslateModule», импортированное модулем «DynamicTestModule». Пожалуйста, добавьте аннотацию @NgModule.

Мой тест выглядит так:

 import { ComponentFixture, waitForAsync, TestBed } from '@angular/core/testing'; import { TranslateModule } from '@ngx-translate/core'; import { BsModalRef, ModalModule } from 'ngx-bootstrap/modal';  import { ErrorDialogComponent } from './error-dialog.component';  describe('ErrorDialogComponent', () =gt; {  let comp: ErrorDialogComponent;  let fixture: ComponentFixturelt;ErrorDialogComponentgt;;   beforeEach(waitForAsync(() =gt; {  TestBed.configureTestingModule({  declarations: [  ErrorDialogComponent,  ],  imports: [  TranslateModule.forRoot(),  ModalModule.forRoot()  ],  providers: [  BsModalRef  ]  }).compileComponents()  }));   beforeEach(() =gt; {  fixture = TestBed.createComponent(ErrorDialogComponent);  comp = fixture.componentInstance;   fixture.detectChanges();  });   it('should create component', () =gt; {  expect.assertions(1);   expect(comp).toBeTruthy();  }); });  

And my jest.config.js inside the lib like this:

 module.exports = {  displayName: 'my-lib-name',  preset: '../../jest.preset.js',  setupFilesAfterEnv: ['lt;rootDirgt;/src/test-setup.ts'],  globals: {  'ts-jest': {  tsconfig: 'lt;rootDirgt;/tsconfig.spec.json',  stringifyContentPathRegex: '\.(html|svg)

Глобальный jest.presets.js и jest.config.js (оба не изменились с момента создания):

 // jest.presets.js  const nxPreset = require('@nrwl/jest/preset'); module.exports = { ...nxPreset };    // jest.config.js  const { getJestProjects } = require('@nrwl/jest'); module.exports = {  projects: getJestProjects(), };  

Я уже много искал, но не смог найти никакого ответа. Я надеюсь, что кто-нибудь сможет помочь. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Ответ №1:

Оказалось, что зависимость (я не знаю, какая именно) была сломана или ошибочна. Чистая переустановка всех зависимостей исправила сообщение об ошибке.

, }, }, coverageDirectory: '../../coverage/libs/my-lib-name', transform: { '^. \.(ts|mjs|js|html)Глобальный jest.presets.js и jest.config.js (оба не изменились с момента создания):


Я уже много искал, но не смог найти никакого ответа. Я надеюсь, что кто-нибудь сможет помочь. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Ответ №1:

Оказалось, что зависимость (я не знаю, какая именно) была сломана или ошибочна. Чистая переустановка всех зависимостей исправила сообщение об ошибке.

: 'jest-preset-angular', }, snapshotSerializers: [ 'jest-preset-angular/build/serializers/no-ng-attributes', 'jest-preset-angular/build/serializers/ng-snapshot', 'jest-preset-angular/build/serializers/html-comment', ] };

Глобальный jest.presets.js и jest.config.js (оба не изменились с момента создания):


Я уже много искал, но не смог найти никакого ответа. Я надеюсь, что кто-нибудь сможет помочь. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Ответ №1:

Оказалось, что зависимость (я не знаю, какая именно) была сломана или ошибочна. Чистая переустановка всех зависимостей исправила сообщение об ошибке.