У меня есть метод "onEdit" в компоненте. В этом методе я вызвал сервисный метод «getAttributeById», я делаю вызов API в сервисном методе «getAttributeById» и возвращаю наблюдаемый объект, и я пишу для него пример модульного теста, но получаю ошибку
"Ожидаемый шпион getAttributeById был вызван."
onEdit(row) {
if (this.role != 'Admin' && this.role != 'Owner') {
return;
}
this.loadingData = true;
this._service.getAttributeById(row['id']).subscribe((data) => {
this.editing = true;
this.newAttribute = { ...data };
data.isEdit = true;
this.loadingData = false;
this._service.setData({attribute: this.newAttribute});
this.router.navigate(['attributes-edit']);
}) }
файл спецификаций
describe('MetaDataComponent', () => {
let component: MetaDataComponent;
let fixture: ComponentFixture<MetaDataComponent>;
beforeEach(() => {
const metaDataServiceStub = {
getVariables: query1 => ({ subscribe: () => ({}) }),
getAttributeById: arg1 => ({ subscribe: () => ({}) }),
setData: object1 => ({}),
deleteAttribute: arg1 => ({ subscribe: () => ({}) })
};
const routerStub = { navigate: array1 => ({}) };
TestBed.configureTestingModule({
schemas: [NO_ERRORS_SCHEMA],
declarations: [MetaDataComponent],
providers: [
{ provide: MetaDataService, useValue: metaDataServiceStub },
{ provide: Router, useValue: routerStub }
]
});
spyOn(MetaDataComponent.prototype, 'getAttributes');
fixture = TestBed.createComponent(MetaDataComponent);
component = fixture.componentInstance;
});
it('onEdit', () => {
const payload = {id: '11111'};
const metaDataServiceStub: MetaDataService = fixture.debugElement.injector.get(MetaDataService);
const editSpy = spyOn(metaDataServiceStub, 'getAttributeById').and.returnValue(of({}));
expect(component.onEdit(payload)).toBeUndefined();
expect(editSpy).toHaveBeenCalled();
});
Я получаю ошибку ниже
Expected spy getAttributeById to have been called.
Error: Expected spy getAttributeById to have been called.
at stack (http://localhost:9876/absoluteC:/Users/U1192079/Projects/r2d2-ui/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?0b1eaf7a13cae32191eadea482cfc96ae41fc22b:2455:17)
at buildExpectationResult (http://localhost:9876/absoluteC:/Users/U1192079/Projects/r2d2-ui/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?0b1eaf7a13cae32191eadea482cfc96ae41fc22b:2425:14)
at Spec.expectationResultFactory (http://localhost:9876/absoluteC:/Users/U1192079/Projects/r2d2-ui/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?0b1eaf7a13cae32191eadea482cfc96ae41fc22b:901:18)
at Spec.addExpectationResult (http://localhost:9876/absoluteC:/Users/U1192079/Projects/r2d2-ui/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?0b1eaf7a13cae32191eadea482cfc96ae41fc22b:524:34)
at Ex