Главное, что нужно иметь в виду при выполнении модульного тестирования, это то, что вы всегда должны тестировать функциональность изолированно.
Если вы хотите проверить FacultiesService
в вашем сценарии, то другие службы должны быть шпионскими или поддельными.
// you can pass data using this mockMatDialog
const mockMatDialog = {}
let apiServiceSpy = jasmine.createSpyObj('ApiService', ['createEntity']);
beforeEach(() => {
TestBed.configureTestingModule({
providers: [{
provide: ApiService,
useValue: apiServiceSpy
},
{
provide: MatDialog,
useValue: mockMatDialog,
},
]
});
});
// If you want to get data from this spy observable use the following // syntax
apiServiceSpy.createEntity.and.returnValue(of({name: 'dummy data'}))
ОБНОВЛЕНИЕ НОВОГО ЗАПРОСА
Да, вы можете передавать данные, которые фактическая услуга вернула, например createEntity
. Я имею в виду, что вы можете передать любые данные, необходимые для тестирования, которые соответствуют вашим критериям. Вы не должны проверять URL или метод http запроса, потому что они не являются частью этой службы. Но в сервисе вы можете проверить, вызывается ли createEntity()
метод apiservice и с какими параметрами.
как
expect(apiServiceSpy.createEntity).toHaveBeenCalled();
OR
// you can get most recent calls to this method
expect(apiServiceSpy.createEntity.calls.mostRecent()).
OR
// you can check the arguments passed to createEntity method as well
expect(apiServiceSpy.createEntity.calls.allArgs())