serviceをモックするjest.mock("../../service");it("省略");jest.mockでモックしたいモジュールを指定する。ここでは、パスは、sample.test.tsからの相対パスを指定している。引数にモックしたモジュールの実装を書くことができる。何も書かないと、undefinedを返す関数が設定される。イメージとしてはモックされたservice.tsはこんな感じのコードに置き換えられる。getName;この状態でテストを実行すると、テストが失敗することが確認できる。exportだけのモックを書くだけであれば、以下のようにシンプルに書ける。}}アロー関数なのでreturnすればよりシンプルになるけど、ひとまずそのまま。上記の状態だと、モックされたservice.tsは以下のように置き換えられる。exportもモックする場合は、__esModuleオプションの設定すれば対応できる。されているMemberクラスのモックも追加する。ハマりどころさきほどまでは、jest.mock配下にMemberクラスの実装を書いていた。};});jest.mockに設定する関数が長くなるので、見通しがわるくるなるので、以下のようにMemberをjest.mockの外に出してみる。};});この場合エラーになる。具体的には以下のような実行順序になる。始まる関数宣言であれば、気にしなくてもよさそうだけど、あんまり使わない方がよいかな。回避するここまでは、jest.mockにモックするモジュールの実装を直接書いてきたが、モック関数を使うとより便利になる。モック関数はjest.fnで作成できて、そのモックがどんな引数で呼ばれたのか?何回呼ばれたの?とかをアサートすることができる。されることでできなかったことを対応してみる。Memberにはクラスではなくモック関数をセットしておく。されるので、最初に設定される。状態ではモックされているモジュールになっている。別の箇所でserviceモジュールを使用している箇所でその変更が反映される。補足あんまりわかってないのが、jest.mockのときはクラスを渡していて、mockImplementationのときはインスタンスを返さないとうまくいかない点。Member(id);});公式を見る限り、jest.mockのモジュールファクトリは、コンストラクタ関数を返せっていってるので、クラス定義(ただん関数)でよくって、mockImplementationのときは、オブジェクトを返すっぽいのかな。Object}jest.fnmockImplementationででてきたjest.fnについて。以下のようにjest.fnでラップすると、モックされた関数は、jest.fnの機能をもつ関数として使うことができる。してテスト内でアサーションすることができる。できることはいっぱいあるので、公式を確認する。呼び出さないとかあるので、そういった場合にjest.fnを使うと便利。モック関数の設定を毎回リセットすることを忘れないようにする。});});jest.spyonについてはまた別途書くかも。フロントエンド...2019-08-07webpackの設定を行う対話ツールをつくるwebpackの設定をちょっと変更して起動したいとき、webpack.conf...2019-01-28jestで特定のモジュールのみmockにするこっちでもmockの話を書いた。»プロフィール30歳からWebやらなんやらを学び始めた人のブログです。(4)検索はてなブログをはじめよう!konoemarioさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。