🥺

[Jest] reference any out-of-scope variablesで悩んでいるそこのあなた

2023/07/23に公開

エラー

The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables

結論

Jest.fn()などで作ったmockの名前をmock~から始める

- const hogeFunctionMock = jest.fn()
+ const mockHogeFunction = jest.fn()

解説

jest.mock()は指定したファイル内のスコープのモックしか取れない。が
mock~から命名するとその規則を無視してくれるらしい (間違ってたらすんません)

参考

CAUTIONの部分
https://jestjs.io/docs/es6-class-mocks#calling-jestmock-with-the-module-factory-parameter

以下deepL

jest.mock()の呼び出しはファイルの先頭に引き上げられるので、Jestはスコープ外の変数へのアクセスを防ぎます。デフォルトでは、最初に変数を定義し、それをファクトリーで使用することはできません。Jestはmockという単語で始まる変数についてはこのチェックを無効にします。しかし、変数が時間通りに初期化されることを保証するかどうかはあなた次第です。Temporal Dead Zoneに注意してください。

感想

Jest難しい

Discussion