Тестирование обратных вызовов, которые не вызываются с помощью Jest? - PullRequest
0 голосов
/ 07 ноября 2018

Есть ли способ проверить, что обратный вызов не вызывается с Jest?

Например:

o.subscribe(cb, cbError, cbComplete);

Обратные вызовы cb и cbComplete должны срабатывать, а обратный вызов cbError не должен срабатывать.

есть ли способ проверить, что cbError никогда не вызывается?

1 Ответ

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

За @ комментарий Ричарда:

let error = false;
let cbError = ()=> { error =true };
let cbComplete = ()=>{
  complete = true;
  expect(complete).toBeTruthy();
  expect(error).toBeFalsy();
  done(); //This is the async callback that Jest provides to let Jest know that the test is done.

}

Внутри полного обратного вызова мы проверяем, что ошибка все еще равна false. Так как это ложно после завершения Observable, обратный вызов cbError никогда не вызывался, потому что этот обратный вызов является взаимоисключающим от других обратных вызовов.

Примечание на стороне

Этот тип указывает на то, что cbError не вызывается. По замыслу обратные вызовы cbError и cbComplete должны быть взаимоисключающими, но мы не можем вызывать done() от jest в обоих местах, потому что это будет равняться условию гонки в тесте, так что, по сути, мы должны доверять дизайну в этом случае. Если у кого-то есть другие мысли по этому поводу, пожалуйста, оставьте комментарий.

...