Как мы можем увеличить покрытие кода для асинхронных операций в Nodejs, используя Sonar, Jest и Supertest. Для следующего кода я написал тестовый пример и проверил статус как 200.
api.post('/activate', async (req, res, next) => {
const { action, requestId } = req.body
DeviceManager.ActivateDevices(req.body) //call device activation
res.send({ requestId, message: 'Request is on processing', action, status: Config.STATUS.PENDING })
next()
})
test('should activate a device', async done => {
const res = await request(app)
.post('/api/v1/devices/activate')
.send({
mac:'YUINH6767'
requestId: '791',
})
expect(res.statusCode).toEqual(200)
done()
})
Здесь утверждение DeviceManager.ActivateDevices(req.body)
является асинхронным c действием. Это действие будет выполнено в какой-то момент, например, через 1 мин. В этом случае, как написать правильный тестовый пример, чтобы получить хорошее покрытие кода.