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.
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 .
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');
});