+
+
+
+
+
diff --git a/examples/app-vitest-full/server/api/forms/blob.post.ts b/examples/app-vitest-full/server/api/forms/blob.post.ts
new file mode 100644
index 000000000..1562ed1ab
--- /dev/null
+++ b/examples/app-vitest-full/server/api/forms/blob.post.ts
@@ -0,0 +1,6 @@
+import { defineEventHandler, getHeader, readRawBody } from 'h3'
+
+export default defineEventHandler(async (event) => {
+ const body = await readRawBody(event, 'utf8')
+ return { body, contentType: getHeader(event, 'content-type') }
+})
diff --git a/examples/app-vitest-full/server/api/forms/mutlipart.post.ts b/examples/app-vitest-full/server/api/forms/mutlipart.post.ts
new file mode 100644
index 000000000..2fd78049d
--- /dev/null
+++ b/examples/app-vitest-full/server/api/forms/mutlipart.post.ts
@@ -0,0 +1,6 @@
+import { defineEventHandler, readMultipartFormData } from 'h3'
+
+export default defineEventHandler(async (event) => {
+ const parts = await readMultipartFormData(event)
+ return parts?.map(part => ({ ...part, data: part.data.toString('utf8') })) ?? []
+})
diff --git a/examples/app-vitest-full/tests/nuxt/fetch.spec.ts b/examples/app-vitest-full/tests/nuxt/fetch.spec.ts
index 739899bd1..447f1c647 100644
--- a/examples/app-vitest-full/tests/nuxt/fetch.spec.ts
+++ b/examples/app-vitest-full/tests/nuxt/fetch.spec.ts
@@ -3,7 +3,7 @@ import { describe, expect, it, vi } from 'vitest'
import { mountSuspended, registerEndpoint } from '@nuxt/test-utils/runtime'
import { listen } from 'listhen'
-import { createApp, eventHandler, toNodeListener, readBody, getHeaders, getQuery, setCookie } from 'h3'
+import { createApp, eventHandler, toNodeListener, readBody, getHeaders, getQuery, setCookie, readFormData } from 'h3'
import FetchComponent from '~/components/FetchComponent.vue'
@@ -16,7 +16,7 @@ describe('server mocks and data fetching', () => {
const server = await listen(toNodeListener(app))
const urls = await server.getURLs()
const { url } = urls[0]!
- expect(await $fetch