Blogs

GraphQL API テストの強化:ステップバイステップの Jest ガイド

March 16, 2024

GraphQL API テストを次のレベルに引き上げる準備はできていますか?Jest を使って GraphQL エンドポイントを効果的にテストする方法を考えたことがあるなら、ここが正解です。GraphQL API のテストは、独自のクエリ言語とリゾルバーのために難しい場合がありますが、心配はいりません。Jest はプロセスを簡素化するためにここにいます。

この GitHub リポジトリをフォークできます (リポジトリリンク)そして段階的に私と仲良くしてください

一緒に掘り下げて、効果的なGraphQL APIテストの秘訣を解き明かしましょう!

Jest のインストールと必要な依存関係

# for typescript
npm install --save-dev ts-jest

# for javascript
npm install --save-dev jest

テスト用の Jest の設定

typescript を使っているので、アプリケーションを少し設定する必要があります。

コマンドを使って jest を初期化しましょう

npx ts-jest config:init

これにより、が生成されます jest.config.js ファイル。これが jest がタイプスクリプトと連動する理由です。

テストケースの作成

という名前のファイルを作成しましょう 投稿.テスト.TS を作成 の中に テスト** ディレクトリ。

次に、をインポートします @jest/グローバル ライブラリには、テストに必要な関数が含まれています。

import {describe, expect, test} from '@jest/globals';
import {GraphQLClient} from 'graphql-request';

graphqlクエリを実行し、期待される結果を比較するための応答を取得するには、graphqlクライアントが必要です。今回は 'を使いますグラフリクエスト'そのための図書館

import {GraphQLClient} from 'graphql-request';

// create a new graphql client for requesting to our api
const client = new GraphQLClient("http://localhost:4000/")

この例で何をテストするかを定義しましょう。

この例では、テストします 投稿を作成 ミューテーションでは、まずAPIを使用して投稿を作成し、その投稿が投稿と同じタイトルであるかどうかを確認します

describe('create post mutation', () => {

    test('creates a new post', async () => {

        // graphql query
        const query = `#graphql 
        mutation CREATE_POST_TEST($title: String!, $content: String) {
            createPost(title: $title, content: $content) {
                _id
                content
                content
                title
            }
        }
        `;

        // query variables
        const variables = {
            "title": "testing post title",
            "content": "testing post content"
        };

        let data: any = {};

        try {
            // execute the query
            data = await client.request(query, variables);

        } catch (e) {
            // report the error
            console.log(e)
        }

        expect(data?.createPost).toHaveProperty("title", variables?.title)

    });

});

上記のコードでは

  1. 私たちは使う 説明する ユニットテストスイートについて説明します。必須ではありませんが、このテストスイートの内容を理解しておくと役に立ちます。
  2. の中に テスト、テストコードを書きます。この関数の最初の引数はテストケースの内容を示し、2 番目の引数はテストコードを含むコールバック関数です。
  3. コールバック関数では、最初に API リクエストを送信し、次に実際の応答と予想される応答を比較しました。両方が一致すればテストは合格し、そうでない場合は失敗します。

テストケースを実行する

テストケースの実行には 2 つのステップがあります。

1。API サーバーを起動します。

npm run start:dev

2。jest を実行してすべてのテストケースを実行します。

jest

出力

Jest の支援により、キラーテスト環境を構築し、一流のテストケースを作成し、テストをワークフローにシームレスに統合する方法を学びました。それでは、このテストの勢いを維持して、信頼性と耐障害性に優れたいくつかの API をユーザーに提供していきましょう。レベルアップする準備はできていますか?やってみよう!