2024.2.1
PothosのMocks Pluginでresolverをモックする
概要
今回はPothosの Mocks Plugin を使ってresolverをモックしてみたいと思います。
Pothos - Mocks Plugin
手順
現状
Projectというモデルに3つのレコードが登録されていて、projectsのresolverでは以下のdataを取得できるという状態から始めます。
Query
GraphQL_____Query_____query Projects {
projects {
id
}
}
レスポンス
JSON_____response_____{
"data": {
"projects": [
{
"id": "1"
},
{
"id": "2"
},
{
"id": "3"
}
]
}
}
Mocks Pluginをインストール
bash_____terminal_____yarn add @pothos/plugin-mocks
TypeScript_____SchemaBuilder_____export const builder = new SchemaBuilder<{
Context: {};
PrismaTypes: PrismaTypes;
}>({
plugins: [PrismaPlugin, MocksPlugin], // <- MocksPluginを追加
prisma: {
client: prisma,
},
});
モックするresolverを定義
TypeScript_____builder.toSchema_____import { builder } from './builder';
export const schema = builder.toSchema({
mocks: {
Query: {
projects: (parent, args, context, info) => [{ id: 'hoge' }],
},
},
});
レスポンスを確認
JSON_____response_____{
"data": {
"projects": [
{
"id": "hoge"
}
]
}
}
たったこれだけでモックできてしまいました。
まとめ
今回はPothosの公式ページにも掲載されているMocks Pluginを使ってresolverをモックしてみました。
非常に簡単にresolverをモックできるので、各resolverごとに環境変数や切り替え可能な変数などでモックするかどうか管理できるようにすると良さそうに思いました。