За @ комментарий Ричарда:
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 в обоих местах, потому что это будет равняться условию гонки в тесте, так что, по сути, мы должны доверять дизайну в этом случае. Если у кого-то есть другие мысли по этому поводу, пожалуйста, оставьте комментарий.