javascript - Testa callbacks som inte kallas med Jest?
Finns det ett sätt att testa att en callback inte anropas med Jest?
Till exempel:
o.subscribe(cb, cbError, cbComplete);
Callbacks cb och cbComplete bör köras och callback cbError bör inte köras.
finns det ett sätt att testa att cbError aldrig kallas?
Svar #1
Enligt @Richard:s kommentar:
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.
}
Inuti hela callback-funktionen testar vi att error fortfarande är false. Eftersom det är false efter att Observable har slutförts, kallades cbError-callbacken aldrig, eftersom den callbacken är ömsesidigt uteslutande från de andra callbacks.
Sidnot
Detta ger på ett sätt en indikation på att cbError inte kallas. Enligt designen är cbError- och cbComplete-återanropen avsedda att vara ömsesidigt uteslutande, men vi kan inte kalla done() från jest på båda ställena, eftersom det skulle motsvara en tävlingssituation i testet, så i princip måste vi lita på designen i detta fall. Om någon har några andra tankar om detta, vänligen lämna en kommentar.
