Я пытаюсь протестировать некоторые маршруты API, и мой охват кода хорош, но я постоянно отсутствую в ветке err
. Ниже приведен пример одного из моих контроллеров маршрута API.Mock response in API test
var index = function(req, res) {
request({url: privateUrl + '/players/' + req.params.playerId + '/games',
headers: {'Accept': 'application/json', 'Content-Type': 'application/json'},
method: 'GET'}, function(err, response, body) {
if (err) {
logger.warn('Error while retrieving games for player %d.', req.params.playerId, err);
return res.status(500).json({
message: err.message ? err.message : 'Error while retrieving player games.'
});
} else {
res.json(helpers.JSONparse(body).response);
}
});
};
Как протестировать корпус err
? То, что я идеально хотел бы сделать, это .set('err', true)
, а затем проверить, что res.status
и err.message
- это то, что я ожидал. Вот спецификации, где я испытываю успешный ответ:
it('should return an object with player games', function(done) {
request
.get('/api/players/' + playerId + '/games')
.set('Content-Type', 'application/json')
.set('cookie', cookie)
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, res) {
expect(err).toBeNull(err ? err.message : null);
expect(res.body.games).toBeDefined();
done();
});
});
Postman for chrome - отличный инструмент для проверки вашего API. – ODelibalta