#angular #jasmine
#угловой #жасмин
Вопрос:
Я тестирую объект наблюдения и проверяю, содержит ли он ? элемент. Исходные данные следующие.
Хотя оба ожидания выполняются без ошибок, я не убежден в том, что ожидание проверяет ? отметка.
Разве мне не нужно было бы проверять наличие полного элемента { имя: ‘?’, IsAlive: false },
Когда я утешаю.запишите результат, он выглядит так
[Объект{имя: ‘Test’, IsAlive: истина}, Объект{имя: ‘Test2’, IsAlive: ложь}, Объект{имя: ‘Test3’, IsAlive: ложь}, Объект{имя: ‘Test4’, IsAlive: ложь}, Объект{имя: ‘Test5’, IsAlive: ложь}]
export const TestModelObjectMock: any[] = [ { name: 'Test', isAlive: false }, { name: 'Test2', isAlive: false }, { name: 'Test3', isAlive: false }, { name: '?', isAlive: false }, { name: 'Test4', isAlive: true }, { name: 'Test5', isAlive: false } ]; const testModelObject = TestModelObjectMock; it('should call the title service and filter questionmark', fakeAsync(() =gt; { mockTestService.extend({ getTitles: () =gt; of(testModelObject ) }); setupComponent(); flush(); expect(component.titleService.getNames().subscribe(result =gt; expect(result).not.toContain('?'))); expect(component.titleNames$.subscribe(result =gt; {expect(result.length).toEqual(5), console.log(result)}));
Ответ №1:
Вы оборачиваете подписки на наблюдаемые объекты в ожидания, которые вы не можете.
Смотрите здесь пример того, как вы можете тестировать наблюдаемые объекты:
it('Async test example - RxJS Observables', fakeAsync(() =gt; { let test: boolean; const test$ = of(test); test$.subscribe(() =gt; { test = true; }); tick(); // wait for observable to emit expect(test).toBeTruthy(); }));
Комментарии:
1. Правильно, но как бы я в тесте подписки на него содержал элемент { имя:’?’, IsAlive: false },
2. Как и в случае с тестовой переменной. Установите переменную внутри подписки и протестируйте ее снаружи — после галочки()