Vous souhaitez demander une fonctionnalité ou signaler un bug ?
caractéristique
Quel est le comportement actuel ?
En raison de BufferedConsole
, il est impossible d'écraser console.error
, console.log
, console.warn
et console.info
.
Cas d'utilisation : nous aimerions pouvoir générer des erreurs et des échecs de tests console.error
et console.warn
.
Si le comportement actuel est un bogue, veuillez fournir les étapes à reproduire et soit une démo repl.it via https://repl.it/languages/jest ou un référentiel minimal sur GitHub que nous pouvons yarn install
et yarn test
.
Quel est le comportement attendu ?
Je m'attends à ce que si j'ajoute console.error = (message) => { throw new Error(message); };
(globalement, dans un test ou dans setupFiles/setupFramework), chaque fois que console.error
est appelé dans un test, il génère une erreur et échoue à un test.
En réalité, rien ne se passe.
Veuillez fournir votre configuration Jest exacte et mentionner votre version Jest, node, yarn/npm et votre système d'exploitation.
N / A
Utilisez la fonction moqueuse jest.fn()
:
console.warn = jest.fn(warn => {
throw new Error(warn);
});
@thymikee Cela ne fonctionne pas non plus comme prévu, en utilisant un fichier de configuration global :
en "setupTestFrameworkScriptFile": "<rootDir>/tools/jest/setup-framework.js"
beforeEach(() => {
console.error = jest.fn((error) => {
throw new Error(error);
});
});
A l'essai :
const somePromiseThatLogsConsoleError = () => {
return new Promise((resolve, reject) => {
console.error('foobar');
resolve();
});
});
it('test that has console.error', () => {
return somePromiseThatLogsConsoleError().then(() => {
expect(false).toBeTrue();
});
});
je viens d'essayer et ça marche :
// test file
test('lol', () => {
return new Promise((resolve) => {
console.log('lol');
resolve();
});
});
// setup file
global.console.log = () => {
throw new Error('hey!');
};
résultat:
__tests__/test-test.js
✕ lol (3ms)
● lol
hey!
at CustomConsole.Object.<anonymous>.global.console.log (setup.js:2:9)
at resolve (__tests__/test-test.js:3:13)
at Object.<anonymous>.test (__tests__/test-test.js:2:10)
at process._tickCallback (internal/process/next_tick.js:109:7)
Test Summary
› Ran all tests.
› 1 test failed, 0 tests passed (1 total in 1 test suite, run time 0.661s)
Commentaire le plus utile
Utilisez la fonction moqueuse
jest.fn()
: