Deno でテストを書き進めるにあたり、fetch
の実行結果をモックしたくなりました。
トライしてみたが上手くいかず、結果公開されているモジュールで目的は果たせたのでまとめです。
参考
トライ
グローバル空間にある fetch を Promise<Response>
を返す関数に差し替えればできるだろうと考えました。
以下実装例。
1 | export async function externalCall(): Promise<Response>{ |
1 | let org: Function | null = null; |
1 | import { assertEquals } from "https://deno.land/std@0.127.0/testing/asserts.ts"; |
外部のURL https://ccbaxy.xyz/blog/ に対してアクセスして、setFetchMock
で設定した値を fetchが返すようになりました。
ただ、deno test test.ts
をやるとTS2322 [ERROR]
となり、実行には、--no-check
が必要でした。
もしくは、fetch_mock.ts
の fetch_mock.js
として準備すれば不要ではあります。
ここまでやってみて公開されているモジュールを探し始めました。
公開されてるモジュールで十分だった
というわけで探してみるとmock_fetch を見つけました。
これが便利でした。
1 | import { assertEquals } from "https://deno.land/std@0.127.0/testing/asserts.ts"; |
これなら、deno test test2.ts
で実行できました。
さっと mock_fetch を見てみると、typeof globalThis.fetch;
といった型定義があるので、このあたりで型チェックを回避できていそう。
ではでは。