У меня есть угловое приложение, и я занят тестированием с Жасмином.
У меня есть этот метод:
/** Gets the case type info configuration that is used on various views */
getCaseTypeInfo(spinnerMessage: string): Observable<CaseTypeInfoModel[]> {
let result: Observable<CaseTypeInfoModel[]>;
Iif (this.caseTypeInfoSnapshot) {
result = of(this.caseTypeInfoSnapshot);
} else {
result = this.http.get<CaseTypeInfoModel[]>(`${this.api}/types`, spinnerMessage).pipe(map(i => {
this.caseTypeInfoStoreService.addCaseTypeInfoToStore(i);
return i;
}));
}
return result;
}
и юнит-тест для него до сих пор:
// tslint:disable-next-line:no-commented-code
it('shoud get case type info configuration that is used on various views', () => {
let result99: Observable<CaseTypeInfoModel[]>;
result99 = service.getCaseTypeInfo('spinner') as Observable<CaseTypeInfoModel[]>;
const castTypeinfoModelTest = new Array<CaseTypeInfoModel>();
service.getCaseTypeInfo('spinner');
caseTypeInfoStoreService.addCaseTypeInfoToStore();
afwHttpMock.setupOnlyResponse(result99, 200);
expect(castTypeinfoModelTest).toBe(true);
});
но оно не искажается.
И я получаю сообщение об ошибке в этой строке:
expect(castTypeinfoModelTest).toBe(true);
Спасибо
У меня теперь так:
it('shoud get case type info configuration that is used on various views when snapshot doesnt exists', () => {
let result99: Observable<CaseTypeInfoModel[]>;
const spy = spyOn(caseTypeInfoStoreService, 'addCaseTypeInfoToStore');
result99 = service.getCaseTypeInfo('spinner') as Observable<CaseTypeInfoModel[]>;
const response = [{ mock: 'mock' } as any];
service['caseTypeInfoSnapshot'] = response;
caseTypeInfoStoreService.addCaseTypeInfoToStore();
afwHttpMock.setupOnlyResponse(result99, 200);
expect(spy).toHaveBeenCalledWith('spinner');
afwHttpMock.returnSuccessResponse();
});
Но эточасть по-прежнему красная:
i => {
this.caseTypeInfoStoreService.addCaseTypeInfoToStore(i);
return i;
этого метода:
/** Gets the case type info configuration that is used on various views */
getCaseTypeInfo(spinnerMessage: string): Observable<CaseTypeInfoModel[]> {
let result: Observable<CaseTypeInfoModel[]>;
if (this.caseTypeInfoSnapshot) {
result = of(this.caseTypeInfoSnapshot);
} else {
result = this.http.get<CaseTypeInfoModel[]>(`${this.api}/types`, spinnerMessage).pipe(map(i => {
this.caseTypeInfoStoreService.addCaseTypeInfoToStore(i);
return i;
}));
}
return result;
}