угловой тест не проверяет фактическое значение, излучаемое наблюдаемыми

#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. Как и в случае с тестовой переменной. Установите переменную внутри подписки и протестируйте ее снаружи — после галочки()