March 16, 2024
GraphQL API テストを次のレベルに引き上げる準備はできていますか?Jest を使って GraphQL エンドポイントを効果的にテストする方法を考えたことがあるなら、ここが正解です。GraphQL API のテストは、独自のクエリ言語とリゾルバーのために難しい場合がありますが、心配はいりません。Jest はプロセスを簡素化するためにここにいます。
この GitHub リポジトリをフォークできます (リポジトリリンク)そして段階的に私と仲良くしてください
一緒に掘り下げて、効果的なGraphQL APIテストの秘訣を解き明かしましょう!
# for typescript
npm install --save-dev ts-jest
# for javascript
npm install --save-dev 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)
});
});
上記のコードでは
テストケースの実行には 2 つのステップがあります。
1。API サーバーを起動します。
npm run start:dev
2。jest を実行してすべてのテストケースを実行します。
jest
Jest の支援により、キラーテスト環境を構築し、一流のテストケースを作成し、テストをワークフローにシームレスに統合する方法を学びました。それでは、このテストの勢いを維持して、信頼性と耐障害性に優れたいくつかの API をユーザーに提供していきましょう。レベルアップする準備はできていますか?やってみよう!