MSWを使っていて、以下のようにクエリパラメータによって結果が変わるテストをしたい
/api/list?q=xxxx&a=yyyy&b=zzzz
そこでMSWのルーティングマッチング機能があるので調べた
まず、基本的にAPIリクエストのマッチはmethod
とURL
で行われる
方法は3つ
クエリパラメータによってレスポンスを変える場合はマッチしたURLのhandlerの中で行う
条件つきレスポンスのドキュメント
https://mswjs.io/docs/basics/response-resolver#conditional-response
rest.get('/user', (req, res, ctx) => { const userId = req.url.searchParams.get('userId') if (userId === 'abc-123') { // Return a mocked response only if the `userId` query parameter // equals to a specific value. return res( ctx.json({ firstName: 'John', lastName: 'Maverick', }), ) } // No return statement, perform the request as-is. })
このようにしてクエリパラメータによって結果を変えることができる
ちなみに、上記のコード例のようにreturn
で何も返さない場合は、実際のエンドポイントのリクエストがされる
うまく活用すると幅広いテストが行えそう