API呼び出しをテストする方法

UnsplashのRobinJonathanDeutschによる写真

みなさん、最近、JavaScriptエコシステムでのテストに関するいくつかの質問を見ました。いくつかの質問は次のとおりです。

  • API呼び出しをテストする方法は?
  • axiosをテストする方法は?
  • useEffectフックから起動されたAPI呼び出しをテストする方法は?
  • React QueryからのAPI呼び出しをテストする方法は?

シナリオ

useEffectフックまたはuseQueryカスタムフックのいずれかを介してAPIリクエストを起動するコンポーネントがあると想像してみましょう。データを受け取ったら、そのデータから名前を分解してレンダリングします。これが可能な実装です

これをテストする一般的な方法は、コンポーネントをレンダリングし、API呼び出しから返された名前が画面にレンダリングされるのを待つことです。React Testing Libraryを使用すると、予想されるテストは次のようになります。

ここで問題となるのは、テストのリクエストが期待されるデータを返すことをどのように確認するかです。

axios-mock-adapterの使用

axios-mock-adapter最初の解決策です。やりたいことを明示的に宣言するためのより読みやすい構文を提供しながら、axiosをモックすることができます。次の例では、MockAdapter instance. Using this instance, we then use theaxios参照を取得し、新しいonGet`メソッドを作成して、予期されたURLに対してGETリクエストを実行したときに、必要なデータが返されるようにします。

axiosを手動でモックする

Jestを使用して、axiosを自分でモックし、外部ライブラリのインストールを回避できます。次のアプローチでは、jest.mockaxiosをモックするために使用し、テスト内でgetメソッドの実装をモックして、期待されるURLの期待されるデータを返します。

このアプローチが気に入らない場合axios.jsは、__mocks__ディレクトリ内にファイルを作成し、そこに次のスニペットを追加できます。

テストを実行すると、Jestは自動的にそのファイルを取得し、axiosをモックします。

MSWの使用

MSWは私がすべてをテストする方法を変えました。上記の他のすべてのアプローチがありますが、モックを維持することは急速にエスカレートする可能性があり、しばらくすると、それらの束になってしまいます。時間を節約し、すべてを一元化するために、私はMSWを使用しています。

このシナリオでは、必要なのは、期待するデータを返すリクエストのハンドラーを作成することだけです。次に、ハンドラーをハンドラーリストに追加するかserver.use、テストを呼び出してハンドラーをオーバーライドします。

MSWについて詳しく知りたい場合は、MSWに関する私のブログ投稿を読むことができます。

まとめ

ご覧のとおり、API呼び出しをテストするときは、使用することを決定できるオプションがたくさんあります。今はMSWを使用することを好みますが、過去には他のすべてのオプションを使用していました。

このブログ投稿がお役に立てば幸いです。今後ともよろしくお願いいたします。またお会いしましょう!

もともとhttps://www.danieljcafonso.comで公開されました。

提案された投稿

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

はじめに 脳卒中は、いつでも誰でも起こり得る医療上の緊急事態です。これは、脳の一部への血流が中断され、脳機能が突然失われることで発生します。

Jest — 強力な JavaScript テスト フレームワーク

Jest — 強力な JavaScript テスト フレームワーク

テストはソフトウェア開発において不可欠な部分です。これにより、コードの信頼性が保証され、期待どおりに機能し、エラーの可能性が軽減されます。

関連記事

ジャーナル・アウトバート

ジャーナル・アウトバート

日記を開く: 1 日 1 枚の写真。私はいつも物語に魅了されてきました。

ネットワークテレビツイッター

ネットワークテレビツイッター

古いものは再び新しくなり、以前はキラキラ輝いていたものがくすんで見えます。私は、JNCO ジーンズが 1990 年代後半の他のファッションとともにダウンタウンのクールな子供たちの間で復活したことについて話しているのではありません。

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

無限の命

大人になると、世界はそういうもので、あなたの人生はただ世界の中で生きていくだけで、決して命を危険にさらすことはなく、決められた道をたどって最後には死ぬだけで、失敗しないように努めるのだと言われがちです。壁を打ちすぎてはいけません。しかし、それは非常に限られた人生です。