Express typescript jest boilerplate

The purpose of this boilerplate is to have fully configured express project with linter, typescript and integrational testing ready to go.
So to start working with application just:

  • npm i
  • npm run dev
    and local server with live reload would be started for you.

typescript

It is your friend it will show when you sending wrong arguments to function or trying to call a property that doesnt exists.
All the type checks is done also in tests and during the development step. So if you made the error in types you got the feedback immediatly.

tsconfig.json

{
“compilerOptions”: {
“moduleResolution”: “node”,
“target”: “ES2019”,
“noImplicitAny”: true,
“module”: “CommonJS”,
“baseUrl”: “./src”,
“rootDir”: “./src”,
“outDir”: “./build”,
“esModuleInterop”: true,
“allowSyntheticDefaultImports”: true,
“strict”: true,
“paths”: {
“src/“: [
“./src/

]
}
},
“include”: [“./src”],
“exclude”: [“node_modules”]
}

Code example

users.ts

import {
    Request,
    Response,
    Router,
} from 'express'

const router = Router()

/**
 * @swagger
 *
 * /users:
 *   get:
 *     description: get users
 *     produces:
 *       - application/json
 *     responses:
 *       200:
 *         description: array of users
 */
router.post(
    '/',
    (req: Request, res: Response): void => {
        res.send([{name: 'user1'}, {name: 'user2'}])
    },
)

export default router

users.spec.ts

import path from 'path'
import supertest from 'supertest'

import app from 'server'

describe('Test html root', () => {
    it('success scenario', async (done) => {
        const res = await supertest(app)
            .get('/html')

        expect(res.status).toBe(200)
        expect(res.body).toEqual([{name: 'user1'}, {name: 'user2'}])

        done()
    })
})

Author: Shantun Parmar

3 thoughts on “Express typescript jest boilerplate

  1. I’m commenting to let you be aware of of the amazing discovery my child developed browsing the blog. She came to find a good number of details, including how it is like to have a great coaching character to get a number of people clearly completely grasp a number of advanced issues. You actually did more than her desires. I appreciate you for churning out such beneficial, dependable, edifying and cool guidance on that topic to Emily.

Thanks for your support, You may click on ads to encourage us which assits to writers.

Leave a Reply

Your email address will not be published.