実現したいこと
React + Viteプロジェクト(TypeScript)でmswのモックを実行する時に、http.getのメソッド内に入ってくれなくて困っています。
試したこと
公式ドキュメントを参考にコードを準備しました。
https://mswjs.io/docs/best-practices/typescript
Reactを起動して実行しているブラウザの別タブで下記のURLを実行して、GETアクセスを試したが、mswのhandler.tsは実行されるが、メソッド内に入ってくれなく、うまくいかない
http://localhost:5173/api/persons
準備したファイル
public/mockServiceWorker.js ※npx msw init public/ --save で自動生成したもの
src/mocks/browser.ts ※新規作成
src/mocks/handlers.ts ※新規作成
src/main.ts ※browser.tsを実行するコードを追記
ソース
TypeScirpt
1// handler.ts 2import { http, HttpHandler, HttpResponse } from 'msw' 3 4type Person = { 5 personCode: string 6 personName: string 7 age: string 8} 9 10type ParamsType = { 11 personCode: string 12} 13 14type RequestBodyType = { 15 person: Person 16} 17 18type ResponseBodyType = { 19 persons: Person[] 20} 21 22export const handlers: HttpHandler[] = [ 23 http.get<ParamsType, RequestBodyType, ResponseBodyType, '/api/persons'>( 24 '/api/persons', 25 ({ params }) => { 26 // dummy 27 console.log(params) 28 } 29 ) 30]
TypeScirpt
1// browser.ts 2import { setupWorker } from 'msw/browser' 3import { handlers } from './handlers' 4 5export const worker = setupWorker(...handlers)
TypeScirpt
1// main.ts のReactDomの前に追記 2 3if (process.env.NODE_ENV === 'development') { 4 const { worker } = await import('@/mocks/browser') 5 worker.start() 6}
パッケージバージョン
dependencies
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.23.1"
devDependencies
"msw": "^2.3.1",
"typescript": "^5.2.2",
"vite": "^5.2.0"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。