Тестирование Observables с шуткой - PullRequest
0 голосов
/ 05 июня 2018

Как я могу протестировать Observables с помощью Jest?

У меня есть Observable, который срабатывает ~ каждую секунду, и я хочу проверить, правильно ли запускается 1-е событие, прежде чем истечет время шутки.

const myObservable = timer(0, 1000); // Example here

it('should fire', () => {
  const event = myObservable.subscribe(data => {
    expect(data).toBe(0);
  });
});

Этот тест проходит, но он также проходит, если я заменяю на toBe('anything'), поэтому я предполагаю, что я делаю что-то не так.

Я пытался использовать expect.assertions(1), но, похоже, он работает только сОбещания.

Ответы [ 2 ]

0 голосов
/ 19 мая 2019
test('Test name', (done) => {
  service.getAsyncData().subscribe((asyncData)=>{
    expect(asyncData).toBeDefined();
       done();
    })
  });
})
0 голосов
/ 01 августа 2018

В документации Jest есть несколько хороших примеров передачи аргумента для теста.Этот аргумент может быть вызван, чтобы сигнализировать о прохождении теста, или вы можете вызвать fail на нем, чтобы провалить тест, или он может прерваться и потерпеть неудачу.

https://jestjs.io/docs/en/asynchronous.html

https://alligator.io/testing/asynchronous-testing-jest/

Примеры

Обратите внимание, что для тайм-аута установлено значение 1500 мс

const myObservable = timer(0, 1000); // Example here

it('should fire', done => {
  myObservable.subscribe(data => {
    done();
  });
}, 1500); // Give 1500ms until it fails

Другой способ проверить, не работает ли он, используя setTimeout

const myObservable = timer(0, 1000); // Example here

it('should fire', done => {
  myObservable.subscribe(data => {
    done();
  });

  // Fail after 1500ms
  setTimeout(() => { done.fail(); }, 1500);
}, timeToFail);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...