В моем Angular 9 проекте я добавил jest
и удалил Jasmine
и Karma
.
Я тестирую сервис с именем CorrectionService
, который имеет зависимость от сервиса RemoteService
.
Я хочу шпионить за RemoteService
, чтобы узнать, вызывается ли метод. Я успешно сделал это путем насмешки вручную с помощью jest RemoteService
.
Теперь я хочу использовать TestBed
. Мой предыдущий тест по Жасмину такой:
import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { HttpClient } from '@angular/common/http';
import { CorrectionService } from './correction.service';
import { Answer, Question } from './setting';
import { IChoosed } from './question/question.component';
import { RemoteService } from './remote.service';
describe('CorrectionService', () => {
let service: CorrectionService;
let remoteServiceSpy: jasmine.SpyObj<RemoteService>
beforeEach(() => {
const spy = jasmine.createSpyObj('RemoteService', ['saveToRemoteAdditionalData']);
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [
CorrectionService,
{provide: RemoteService, useValue: spy}
]
});
service = TestBed.inject(CorrectionService);
remoteServiceSpy = TestBed.inject(RemoteService) as jasmine.SpyObj<RemoteService>;
});
Я пытался использовать jest
макет следующим образом:
import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { HttpClient, HttpHandler } from '@angular/common/http';
import { CorrectionService } from './correction.service';
import { Answer, Question } from './setting';
import { IChoosed } from './question/question.component';
import { RemoteService } from './remote.service';
describe('CorrectionService', () => {
let service: CorrectionService;
this.remoteServiceStub = {} as RemoteService;
beforeEach(() => {
this.remoteServiceStub = {saveToRemoteAdditionalData: jest.fn()};
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers:[
CorrectionService,
{provide:RemoteService, useValue: this.remoteServiceStub}
]
});
this.service = TestBed.inject(CorrectionService);
TestBed.inject(RemoteService);
});
Но тесты не работают, и я получил:
Can't resolve all parameters for CorrectionService: (?).
Полагаю, RemoteService
не вводится. Что я делаю не так?