Jest: テストでconsole.error / warn / logを上書きできるようにする

作成日 2017年03月31日  ·  3コメント  ·  ソース: facebook/jest


機能をリクエストしますか、それともバグを報告しますか?
特徴

現在の動作は何ですか?
BufferedConsoleのため、 console.errorconsole.logconsole.warn 、およびconsole.infoを上書きすることはできません。

ユースケース: console.errorconsole.warnがエラーをスローし、テストに失敗するようにしたいと考えています。

現在の動作がバグである場合は、再現する手順と、 https: //repl.it/languages/jestを介したrepl.itデモ、またはyarn installyarn 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);
});

全てのコメント3件

モッキング機能を使用する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)
このページは役に立ちましたか?
0 / 5 - 0 評価