質問内容
Jestについて勉強中なのですが、mock化の必要性や具体的な使い方がいまいち理解できません。
前提としてNext.jsを使ったアプリケーション内で実行しています。
以下のテストコードを例に質問させていただきます。
app/__tests__/index.test.tsx
1test("テスト1", () => { 2 render(<Home />); 3 //console.log = jest.fn(); 4 const button = screen.getByText("送信する"); 5 fireEvent.click(button); 6 expect(console.log).toHaveBeenCalledWith("送信する"); 7});
app/pages/index.tsx
1export default function Home() { 2 const hundleClick = () => { 3 console.log("送信する"); 4 }; 5 return ( 6 <div> 7 <button onClick={hundleClick}>送信する</button> 8 </div> 9 ); 10}
試したこと
・「テスト1」実行時にエラーになった
● テスト1 expect(received).toHaveBeenCalledWith(...expected) Matcher error: received value must be a mock or spy function Received has type: function Received has value: [Function log]
・console.logをmock化したらテストが通った(コメントアウト部分)
疑問
なぜ「console.log = jest.fn();」が必要なのか理解できませんでした。
JestではNextで使われるconsole.logを理解できないため(Jest内で実行するconsole.logはターミナルへのログ出力に使われており、Next側のconsole.logとは異なるため)、mock関数に置き換えてあげる必要があるという理解であっていますでしょうか?
Jest初学者でふわっとした質問になっていたら申し訳ございません。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー