Skip to content

Register handlers with a server

Set handlers to true so the plugin writes a handlers.ts file that re-exports every generated handler in operation order.

kubb.config.ts
typescript
import { defineConfig } from 'kubb/config'
import { pluginTs } from '@kubb/plugin-ts'
import { pluginMsw } from '@kubb/plugin-msw'

export default defineConfig({
  input: './petStore.yaml',
  output: { path: './src/gen', clean: true },
  plugins: [
    pluginTs(),
    pluginMsw({
      output: { path: 'handlers', mode: 'directory' },
      handlers: true,
    }),
  ],
})

Spread the exported handlers array into the server you start before your tests run.

typescript
import { setupServer } from 'msw/node'
import { handlers } from './src/gen/handlers/handlers'

export const server = setupServer(...handlers)

Output example

src/gen/handlers/handlers.ts
typescript
import { addPetHandler } from './addPetHandler'
import { deleteOrderHandler } from './deleteOrderHandler'
import { deletePetHandler } from './deletePetHandler'
import { findPetsByStatusHandler } from './findPetsByStatusHandler'
import { getPetByIdHandler } from './getPetByIdHandler'
import { placeOrderHandler } from './placeOrderHandler'
import { updatePetHandler } from './updatePetHandler'

export const handlers = [
  updatePetHandler(),
  addPetHandler(),
  findPetsByStatusHandler(),
  getPetByIdHandler(),
  deletePetHandler(),
  placeOrderHandler(),
  deleteOrderHandler(),
] as const
usage.ts
typescript
import { setupWorker } from 'msw/browser'
import { handlers } from './src/gen/handlers/handlers'

// Same collection, wired into a browser worker instead of a Node server.
export const worker = setupWorker(...handlers)