Тестирование Observer завершено с Jest? - PullRequest
0 голосов
/ 06 ноября 2018

RxJS Observer запускает события:

  • complete
  • error
  • next

Если мы хотим проверить завершенное событие с Джестом. Как это сделать?

Например, мы можем проверить события next и error, потому что эти функции передают данные:

o.subscribe(result => {
  expect(result.data.length).toEqual(1);
}, 
(e)=>{expect(e).toBeFalsy()}, 
()=>{ WHAT TO EXPECT HERE? }

Событие complete отсутствует. Сигнатура функции ()=>void. Как мы проверяем сигнатуру этой функции?

Также линия (e)=>{expect(e).toBeFalsy()}, потому что она никогда не срабатывает. Есть ли способ проверить, что обратный вызов не запускается?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018
const toPromise = obs =>
  new Promise((complete, error) => {
    obs.subscribe({ complete, error });
  });

import { getUserEvents } as user from '../user';

// The assertion for a promise must be returned.
it('works with promises', () =>
  expect(toPromise(getUserEvents(4))).resolves.toEqual('Mark'))

Via:

Кроме того, поскольку Jest не будет работать при возникновении ошибок, вы можете использовать любой тестовый фреймворк внутри его теста. Например. import 'rxjs/testing', как описано здесь

0 голосов
/ 06 ноября 2018

Как проверить, что обратный вызов ошибки не вызывается, здесь .

Похоже, это проверит обратный вызов complete:

let complete = false;
let completeHandler = ()=>{
  complete = true;
  expect(complete).toBeTruthy()
};
let errorHandler = (e)=>{
  console.log("THIS IS NEVER EXECUTED");
  console.log("HOW DO WE VERIFY THAT IT IS NOT?");
let o:Observable<Result> = fn(data, errorHandler, completeHandler);
o.subscribe();

errorHandler и completeHandler запекаются в Observable<Result, возвращаемом функцией fn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...