Burlándose de solicitudes http en el nodo usando mocha y sinon
He escrito una aplicación NodeJS usando express que representa algunas llamadas a API externas. Así que estoy tratando de escribir una prueba unitaria usando Mocha y Sinon. Mi objetivo es probar la aplicación sin conexión a Internet, así que estoy tratando de burlarme de las solicitudes https y devolver respuestas falsas.
Tengo un problema que no puedo encontrar ejemplos o tutoriales que se adapten a mi caso. Mi aplicación de nodo escucha en el puerto 8081 las solicitudes http y luego las envía a otro sitio. Quiero probar mi aplicación sin tener que enviar la solicitud a esos servidores externos. Lo intento a continuación y pongo las respuestas json que quiero enviar de vuelta en la función server.respondsWith ().
¿Estoy haciendo esto de la manera correcta al hacer una llamada ajax con chai? o debería enviar las solicitudes dentro de mi aplicación de alguna manera. Cualquier ayuda es apreciada.
var assert = require('assert');
var chai = require('chai');
var spies = require('chai-spies');
var chaiHttp = require('chai-http');
var https = require('https');
var should = chai.should();
var expect = chai.expect;
var sinon = require('sinon');
chai.use(spies);
chai.use(chaiHttp);
describe('Car Repository', function() {
var server;
before(function() {
server = sinon.fakeServer.create();
});
after(function() {
server.restore();
});
var url = 'http://127.0.0.1:8081';
it('should succeed and return a list of cars', function(done) {
server.respondWith('POST', 'https://api.sandbox.cars.com/v2/token_endpoint', JSON.stringify({"access_token":"1t3E4IykfpJAbuFsdfM2oFAo5raB5vhfOV0hAYe","token_type":"bearer","expires_in":604800}));
server.respondWith('GET', url+'/cars', JSON.stringify({'test':'this works'}));
chai.request(url)
.get('/cars')
.end(function(err, res) {
if (err) {
throw err;
}
res.should.have.status(200);
res.body.should.have.property('test');
console.log(res.body);
done();
});
});
});