Create-react-appを使用して、console.logの出力をチェックするjestテストを記述しようとしています
テストする私の機能は:
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
_が正しいパラメーター(渡したパラメーター)を受け取ったことを確認する場合は、jest.fn()
のmock
を確認する必要があります。
また、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');
});
_
続きを読む こちら 。
または、次のようにすることもできます。
it('calls console.log with "hello"', () => {
const consoleSpy = jest.spyOn(console, 'log');
console.log('hello');
expect(consoleSpy).toHaveBeenCalledWith('hello');
});
私は toHaveBeenCalledWith またはjestが模擬呼び出しをチェックするために提供するその他のメソッド( toHaveBeenCalled で始まるもの)を検討します。
it('console.log the text "hello"', () => {
console.log = jest.fn();
log('hello');
expect(console.log).toHaveBeenCalledWith('hello');
});