Я новичок в Angular, и у меня есть вопрос о модульном тестировании Jasmine для Observables. В частности, я хочу провести отрицательное тестирование, чтобы убедиться, что был вызван метод подписки наблюдаемого, в противном случае тест дает ложное срабатывание.
У меня есть базовый компонент, который показывает список имен отчетов и ссылок. Свойство reports объявлено так в файле component.ts:
reports$: Observable<Report[]>;
В блоке beforeEach я настраиваю список из 3 отчетов о тестах и присваиваю отчетам свойство $.
Этот тест не проходит должным образом:
it('correctly fails because the test uses async.', async(() => {
component.reports$.subscribe(val => {
expect(val.length).toEqual(3);
expect(1).toEqual(2); // this does fail as it should
});
}));
Этот тест пройден, но, очевидно, это ложный положительный результат. Могу ли я включить что-либо в сам тест, чтобы он провалился? Я думаю о более широкой картине на будущее, когда в проект будут добавлены дополнительные юнит-тесты. Является ли асинхронная обертка лучшим способом?
it('passes but its a false positive because the async is not used by the test', () => {
component.reports$.subscribe(val => {
expect(val.length).toEqual(3);
expect(1).toEqual(2); // obviously should fail
});
// what can I do in this test to ensure the subscribe was called?
});