8. Добавляем Unit тесты на Jest в приложение на Node.JS

Опубликовано: 22 Май 2026
на канале: Korolev Alexander
1,898
23

https://github.com/AlexKorole/testExp...

0) in global-error-handler.ts
response.status(error.statusCode || error.httpCode).json(error);
next();

1) npm install --save-dev jest
2) npm i -D ts-jest @types/jest
3) npm i -D ts-jest
4) package.json --
{
...
scripts {
...
"test:unit": "jest --config=jest.config.js",
},
...
}
5) create jest.config.js with code below:

process.env.NODE_ENV = 'UNITTEST';
module.exports = {
clearMocks: true,
collectCoverage: true,
collectCoverageFrom: [
'./src/**/*.ts'
],
coverageDirectory: ''стрелка влево'rootDir'стрелка вправо'/test/coverage',
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
preset: 'ts-jest'
};

6) .eslintignore
*.js
node_modules
dist
coverage
}
7) .eslintrc.json
{
...
"env": {
"jest": true
}
...
}
8) test -- controller -- user-controller.test.ts

describe('UserController', () ='стрелка вправо' {
afterEach(() ='стрелка вправо' {
jest.restoreAllMocks();
});

it('postOne', () ='стрелка вправо' {
const userController = new UserController();
const testBody = {
city: 'SPb'
};
const res = userController.postOne(1, testBody as Info);
expect(res).toBeUndefined();
});
}

9) in IDEA
scripts: test:unit
NODE_ENV=UNITTEST
10) Simple variant for IDEA:
process.env.NODE_ENV = 'UNITTEST';
module.exports = {
clearMocks: true,
collectCoverage: false,
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
preset: 'ts-jest'
};
11) npm i -D supertest @types/supertest
12) in user-controller.test.ts
...
let server;
...
beforeAll(async () ='стрелка вправо' {
server = express();
server.use(bodyParser.json());
useExpressServer(server, {
controllers: [UserController], // we specify controllers we want to use
middlewares: [GlobalErrorHandler],
defaultErrorHandler: false
});
});
...
it('postOne with validations', done ='стрелка вправо' {
request(server)
.post('/users/1')
.send({
country: 'Russia',
city: 'SPb'
} as Info)
.expect(204)
.end((err, res) ='стрелка вправо' {
if (err) throw new Error(JSON.stringify(res.body));
done();
});
});