#angular #jestjs #ts-jest #angular2-testing #angular-spectator
Вопрос:
Я использую угловой интерфейс командной строки: 10.2.3 Узел: 12.22.1 npm: 6.14.12
Я новичок в angular. Я пытаюсь использовать jest для тестирования углового кода (проект работает нормально без каких-либо ошибок, теперь добавляю некоторые тесты, в которых я вижу проблему). У меня много пользовательских сервисов, поэтому я использую зрителя, чтобы издеваться над ними. У меня есть несколько тестов, один из них (неудачный) приведен ниже.
Простой тест компонентов, как показано ниже.
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { MatDialog } from '@angular/material/dialog';
import { RouterTestingModule } from '@angular/router/testing';
import { MyComponent } from './my.component';
import { BasicAuthService } from './../../services/auth/basic-auth.service';
import { RefdataService } from '../../services/common/refdata.service';
import { of } from 'rxjs';
import {MyUploadService} from '../../services/data/my-upload.service';
import {
createComponentFactory,
createHostFactory,
Spectator,
SpectatorHost
} from '@ngneat/spectator/jest';
import { ObjectKeysPipe } from '../../pipes/common/object-keys.pipe';
import { DatePipe } from '@angular/common';
import { MockProxy, mock, mockReset } from 'jest-mock-extended';
import { NO_ERRORS_SCHEMA } from '@angular/core';
//Create a MatDialog mock class
export class MatDialogMock {
open() {
return {
afterClosed: () => of({action: true})
};
}
}
describe('MyUploadComponent', () => {
let spectator: Spectator<MyUploadComponent>;
const createComponent = createComponentFactory({
component: MyUploadComponent,
declarations: [MyUploadComponent, ObjectKeysPipe],
imports: [HttpClientTestingModule,
MatSnackBarModule,
RouterTestingModule
],
schemas: [NO_ERRORS_SCHEMA],
mocks: [BasicAuthService,
RefdataService,
MyUploadService
],
detectChanges: false
});
beforeEach(()=> {
spectator= createComponent();
spectator.detectChanges();
});
it('should create', () => {
expect(spectator.component).toBeTruthy();
});
});
Я получаю следующую ошибку:
FAIL src/app/components/my-upload/my-upload.component.spec.ts
? Test suite failed to run
TypeError: testing.waitForAsync is not a function
38 | let spectator: Spectator<MyUploadComponent>;
39 |
> 40 | const createComponent = createComponentFactory({
| ^
41 | component: MyUploadComponent,
42 | declarations: [MyUploadComponent, ObjectKeysPipe],
43 | imports: [HttpClientTestingModule,
at Object.baseCreateComponentFactory [as createComponentFactory] (node_modules/projects/spectator/src/lib/spectator/create-factory.ts:77:5)
at Object.createComponentFactory (node_modules/projects/spectator/jest/src/lib/spectator.ts:19:10)
at src/app/components/my-upload/my-upload.component.spec.ts:40:27
at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:386:30)
at Zone.Object.<anonymous>.Zone.run (node_modules/zone.js/dist/zone.js:143:47)
at Object.<anonymous> (src/app/components/my-upload/my-upload.component.spec.ts:36:1)
Я не могу найти ничего, связанного с этой ошибкой. Я не использую явно waitForAsync. В чем здесь должна быть проблема?
Комментарии:
1. Попробуйте обновить
@ngneat/spectator
до версии 7.2.02. Да, это последняя версия, все еще получающая ту же ошибку. Ниже приведен файл package-lock.json (я все еще удалял локально и глобально и загружал последнюю версию. «@ngneat/зрителя»: { «версия»: «7.2.0», «постановили»: » registry.npmjs.org/@ngneat/spectator/-/spectator-7.2.0.tgz «, «целостности»: «криптография SHA512-FUdQqXCQEBwxAX33ZbU7h25cMKT24kesix8ggishfgyyajbysjwzkzwllplgjqsqcpbe1dlcxcga6tpikgf9rg==», «Дев»: правда, «требует»: { «@тестирования-библиотека-дом»: «7.26.5», «библиотека jQuery»: «3.6.0», «замените в файле»: «^6.2.0», «tslib»: «^2.0.0» }
3. Хорошо, поскольку вы используете
Angular 10
, попробуйте установить версию 5.13.0. Это должна быть приблизительная версия того, когда были выпущены Angular 10 и ng-neat. npmjs.com/package/@ngneat/spectator? activeTab=readme . Перейдите на вкладку версии по этой ссылке.4. Спасибо, использование 5.13.0 работает для меня.