web-dev-qa-db-fra.com

Comment tester un jest console.log

J'utilise create-react-app et j'essaie d'écrire un test de plaisanterie qui vérifie la sortie d'un fichier console.log

Ma fonction à tester est:

export const log = logMsg => console.log(logMsg);

Mon test est:

it('console.log the text "hello"', () => {
  console.log = jest.fn('hello');
  expect(logMsg).toBe('hello');
});

Voici mon erreur

 FAIL  src/utils/general.test.js
  ● console.log the text hello

    expect(received).toBe(expected)    Expected value to be (using ===):      "hello"
    Received:
      undefined
    Difference:
      Comparing two different types of values. Expected string but received undefined.
9
Hello-World

Si vous voulez vérifier que console.log a reçu le bon paramètre (celui que vous avez indiqué), vous devriez vérifier mock de votre jest.fn().
Vous devez également appeler votre fonction log, sinon console.log n'est jamais appelé:

it('console.log the text "hello"', () => {
  console.log = jest.fn();
  log('hello');
  // The first argument of the first call to the function was 'hello'
  expect(console.log.mock.calls[0][0]).toBe('hello');
});

Lire plus ici .

7
meltedspark

Je considérerais soHaveBeenCalledWith ou toute autre méthode proposée par jest pour vérifier les faux appels ( ceux commençant par toHaveBeenCalled ).

it('console.log the text "hello"', () => {
  console.log = jest.fn();
  log('hello');
  expect(console.log).toHaveBeenCalledWith('hello');
});
0
Simply007