機能をリクエストしますか、それともバグを報告しますか?
特徴
現在の動作は何ですか?
BufferedConsole
のため、 console.error
、 console.log
、 console.warn
、およびconsole.info
を上書きすることはできません。
ユースケース: console.error
とconsole.warn
がエラーをスローし、テストに失敗するようにしたいと考えています。
現在の動作がバグである場合は、再現する手順と、 https: //repl.it/languages/jestを介したrepl.itデモ、またはyarn install
とyarn test
が可能なGitHubの最小限のリポジトリのいずれかを提供してください。
期待される動作は何ですか?
console.error = (message) => { throw new Error(message); };
(グローバルに、テストで、またはsetupFiles / setupFrameworkで)追加すると、テストでconsole.error
が呼び出されるたびにエラーがスローされ、テストが失敗することが予想されます。
実際には、何も起こりません。
正確なJest構成を提供し、Jest、ノード、yarn / npmバージョン、およびオペレーティングシステムについて言及してください。
該当なし
モッキング機能を使用するjest.fn()
:
console.warn = jest.fn(warn => {
throw new Error(warn);
});
@thymikeeグローバルセットアップファイルを使用すると、これも期待どおりに機能しません。
"setupTestFrameworkScriptFile": "<rootDir>/tools/jest/setup-framework.js"
beforeEach(() => {
console.error = jest.fn((error) => {
throw new Error(error);
});
});
テスト中:
const somePromiseThatLogsConsoleError = () => {
return new Promise((resolve, reject) => {
console.error('foobar');
resolve();
});
});
it('test that has console.error', () => {
return somePromiseThatLogsConsoleError().then(() => {
expect(false).toBeTrue();
});
});
私はそれを試しましたが、うまくいきました:
// test file
test('lol', () => {
return new Promise((resolve) => {
console.log('lol');
resolve();
});
});
// setup file
global.console.log = () => {
throw new Error('hey!');
};
結果:
__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)
最も参考になるコメント
モッキング機能を使用する
jest.fn()
: