/Knowledge/sources/honojs__hono/llms-full/testing-helper-testclient--part-02--c2e4a74d3511.md
Testing Helper: testClient() (part 02) - hono-docs
Testing Helper: testClient() (part 02) Source evidence: /Sources/honojs hono/provenance.md Canonical citation: https://hono.dev/llms full.txt testclient Summ...
Testing Helper: testClient() (part 02)
Source evidence: /Sources/honojs__hono/provenance.md Canonical citation: https://hono.dev/llms-full.txt#testclient
Summary
The type inference relies on the type flowing through the chained .get(), .post(), etc., calls. If you define routes separately after creating the Hono instance (like the common pattern shown in the "Hello World" example: `const app...
Content
The type inference relies on the type flowing through the chained .get(), .post(), etc., calls. If you define routes separately after creating the Hono instance (like the common pattern shown in the "Hello World" example: const app = new Hono(); app.get(...)), the testClient will not have the necessary type information for specific routes, and you won't get the type-safe client features.
Example:
This example works because the .get() method is chained directly onto the new Hono() call:
// index.ts
const app = new Hono().get('/search', (c) => {
const query = c.req.query('q')
return c.json({ query: query, results: ['result1', 'result2'] })
})
export default app
Metadata
{
"chunk_index": 1,
"citation": "https://hono.dev/llms-full.txt#testclient",
"coverage_role": "overview",
"qualified_title": "Hono / llms-full / Testing Helper > `testClient()` (2)",
"retrieved_at": "2026-07-02T05:51:01Z",
"section_index": 692,
"source_id": "/honojs/hono",
"source_type": "llms_full",
"target_label": "llms-full",
"title": "Testing Helper: testClient() (part 02)",
"upstream_url": "https://hono.dev/llms-full.txt",
"version": "2026"
}