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.

Relaterade artiklar