#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:
Оказалось, что зависимость (я не знаю, какая именно) была сломана или ошибочна. Чистая переустановка всех зависимостей исправила сообщение об ошибке.