2015-07-13 9 views
0

Я пытаюсь протестировать некоторые маршруты 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(); 
    }); 
}); 
+1

Postman for chrome - отличный инструмент для проверки вашего API. – ODelibalta

ответ

0

Самый простой способ бросить ошибку в REST вызова, просто поставить «/ player1 /» вместо игрока, или намеренно плохих данных.

0

Вы можете использовать бесплатный HTTP-mock-сервис, такой как mockable.io. Это отличный способ тестирования, что приложение может обрабатывать различные типы ответов, включая ошибки. Все, что вы изменили в своем коде приложения, - это URL-адрес: вы временно указываете запрос Ajax на URL-адрес вашего mock API.