@universal-packages/trpc-jest
v1.3.1
Published
Jest tooling for trpc
Readme
tRPC Jest
Jest tooling for trpc. This library does not mock the trpc client nor uses an trpc caller to test your trpc router, it actually servers a test trpc server and actually make the requests to it.
In most cases you should test your router using a caller to test your router function directly, but if you want to tests the whole integration and find useful test your app as if it was the client calling it this is the library for you.
Install
npm install @universal-packages/trpc-jestSetup
Add the following to your jest.config.js or where you configure Jest:
module.exports = {
setupFilesAfterEnv: ['@universal-packages/trpc-jest']
}Jest Globals
trpcJest
trpcJest.runTrpcServer(Router: AnyTRPCRouter)
Starts a new trpc server for the given router. Call this at teh top of your file. This will run a server to be used by all test cases.
import { appRouter } from './appRouter'
trpcJest.runTrpcServer(appRouter)
it('should be called', async () => {
...
})trpcJest.client(router: AnyTRPCRouter)
Prepares a trpc client for the given router. Call your endpoint functions using this client.
import { appRouter } from './appRouter'
trpcJest.runTrpcServer(appRouter)
it('should be called', async () => {
const result = await trpcJest.client(appRouter).getUsers.query()
})trpcJest.setServerPath(path: string)
Sets the path of the server, this is the path that will be used to make requests to the server.
trpcJest.setServerPath('/trpc')trpcJest.setClientHeaders(headers: Record<string, string>)
Sets the headers of the client to send to the server.
trpcJest.setClientHeaders({ 'x-test': 'test' })Typescript
In order for typescript to see the global types you need to reference the types somewhere in your project, normally ./src/globals.d.ts.
/// <reference types="@universal-packages/trpc-jest" />This library is developed in TypeScript and shipped fully typed.
Contributing
The development of this library happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving this library.
