1. ホーム
  2. javascript

jestのconsole.logをテストするには?

2023-09-05 06:06:23

質問

私は create-react-app を使っていて ジェスト の出力をチェックするテストを書こうとしています。 console.log .

私がテストする関数は

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

私のテストは:

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

以下は私のエラーです。

 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.

どのように解決するのですか?

もし、あなたが console.log が正しいパラメータ(あなたが渡したもの)を受け取ったかどうかを確認したい場合、次のようにします。 mockjest.fn() .

また log 関数を呼び出す必要があり、そうでなければ console.log は決して呼び出されません。

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

または

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

もっと読む ここで .