Aspida で型安全な MSW ハンドラーを書く

17742 ワード

MSW のハンドラー型推論

テストや Storybook で利用事例が増えている MSW。GraphQL の場合、@graphql-codegen/typescript-mswというプラグインを使えば、良い感じの MSW ハンドラーを生成してくれます。これがあれば、MSW ハンドラー関数起因のミス削減が期待できます。

query GetUser($id: ID!) {
  getUser(id: $id) {
    name
    id
  }
}
import { mockGetUserQuery } from "./generated";

const worker = setupWorker(
  mockGetUserQuery((req, res, ctx) => {
    // id の型推論が効いている
    const { id } = req.variables;
    return res(
      ctx.data({
        // 型制約が効いており、スキーマに沿ったレスポンスしか返せない
        getUser: { name: "John Doe", id: id },
      })
    );
  })
);

worker.start();

mock<OperationName><OperationType>[LinkName]といった命名規則で、ハンドラーファクトリー関数が generate されます。詳細は以下。