web-dev-qa-db-fra.com

moqueur global.window en plaisantant

J'ai une fonction, qui s'exécute sur le nœud et dans le navigateur, que je veux tester avec plaisanterie:

const myFn = () => {
  if(typeof window !== 'object'){
     return 1;
  }
  return 2;
}

Comment puis-je définir l'objet de fenêtre globale sur undefined, pour tester la branche de nœud et que 1 est renvoyé.

par exemple.

  test('myTest', ()=> {
      global.window = undefined;
      expect(myFn()).toEqual(1); // result: 2
  });

Ive a essayé les suggestions ici sans succès: Mocking globals in Jest

11
Daniel Billingham

Vous pouvez essayer d'utiliser le @jest-environment docblock, disponible depuis la version 20.0.0, pour changer l'environnement pour différents tests. Par défaut, il utilise jsdom, mais vous pouvez le modifier pour utiliser node. Voici un extrait de leur documentation:

/**
 * @jest-environment jsdom
 */

test('use jsdom in this test file', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Réf: https://facebook.github.io/jest/docs/en/configuration.html#testenvironment-string

10
nbkhope