質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
モック

モックとは、テスト対象の間接出力が正しいことを確認するためのもの。テスト対象のメソッドが相互に動作するための環境を提供する。インスタンスはテスト用に生成された専用の環境の中で動作する。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Vite

Viteは、フロントエンド向けのビルドツール。JavaScriptはもちろん、さまざまな環境での利用が可能です。ES Modulesを利用することで高速ビルドを実現でき、ファイルの変更時も変更箇所のみを更新できるといった特徴があります。

Q&A

解決済

1回答

179閲覧

React + Viteプロジェクト(TypeScript)でmswのモックを実行する時に、http.getのメソッド内に入ってくれない

miu1

総合スコア7

モック

モックとは、テスト対象の間接出力が正しいことを確認するためのもの。テスト対象のメソッドが相互に動作するための環境を提供する。インスタンスはテスト用に生成された専用の環境の中で動作する。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Vite

Viteは、フロントエンド向けのビルドツール。JavaScriptはもちろん、さまざまな環境での利用が可能です。ES Modulesを利用することで高速ビルドを実現でき、ファイルの変更時も変更箇所のみを更新できるといった特徴があります。

0グッド

0クリップ

投稿2024/07/10 01:02

編集2024/07/10 12:43

実現したいこと

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"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
ReactでMSWはURLからのGETアクセス確認はできなく、axios等で実行する必要がありました。
実行することができました。

投稿2024/07/11 08:44

miu1

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問