C'è un modo conveniente per deridere gli oggetti HTTP Request e Response per i middleware di test delle unità?node.js: Richiesta e risposta http Mock
risposta
sto usando nodejutsu finto:
https://github.com/nodejitsu/mock-request
Forse questo è quello che state cercando.
Il progetto è obsoleto. La raccomandazione è di usare "nock" https://github.com/flatiron/nock –
nock non funziona per ristabilire le richieste http. – Kevin
ho scritto una biblioteca per prendere in giro le risposte a richieste effettuate tramite HTTP standard o tramite il modello di richiesta:
Sembra che sia https://github.com/howardabrams/node-mocks-http e https://github.com/vojtajina/node-mocks può essere utilizzato per creare finto http.ServerRequest
e http.ServerResponse
oggetti.
node-mocks-http sembra un'ottima soluzione per il post originale. – newz2000
Ok, avendo appena scoperto questo, il nodo-mock-http è sorprendente. (Per quanto riguarda testare i gestori delle richieste senza effettuare effettivamente richieste http) –
Dal tag, sembra che questa domanda riguardi Express. In tal caso, supertest è molto buono:
var request = require('supertest')
, express = require('express');
var app = express();
app.get('/user', function(req, res){
res.send(201, { name: 'tobi' });
});
request(app)
.get('/user')
.expect('Content-Type', /json/)
.expect('Content-Length', '20')
.expect(201)
.end(function(err, res){
if (err) throw err;
});
Per uso generale Nodo, Flatiron Nock sembra una buona opzione:
var nock = require('nock');
var example = nock('http://example.com')
.get('/foo')
.reply(200, { foo: 'bar' });
var http = require('http');
var options = {
host: 'example.com',
port: 80,
path: '/foo',
method: 'GET'
}
var req = http.request(options, function(res) {
res.on('data', function(chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function(e) {
console.log('error: ' + e);
});
req.end();
uscita:
BODY: { "pippo": "bar "}
Check out https://github.com/timsavery/node-hmock o npm install hmock
... qualsiasi feedback benvenuto! La soluzione ha funzionato bene per me finora.
Mockery sembra perfetto per questo.
In sostanza dirotta le chiamate require
e restituisce un oggetto/funzione stub diverso specificato.
Ti consiglio di utilizzare motty. perché abbiamo bisogno di un altro codice?
- 1. richiesta Node.js HTTP non restituendo piena risposta
- 2. Node.js Stream di risposta HTTP
- 3. Registro richiesta e risposta http jax-ws
- 4. Richiesta GET HTTP e risposta XML
- 5. funziona come richiesta e risposta http python
- 6. Risposta null dalla richiesta HTTP HTTP
- 7. omniauth mock risposta facebook
- 8. Invia richiesta HTTP e ricevi risposta HTTP utilizzando javascript
- 9. Richiesta PUT HTTP con Node.js
- 10. Risposta HTTP per metodi HTTP non supportati con Node.js?
- 11. "Risposta diretta con Node.js" - Invio di risposta HTTP con diverso processo Node.js (diverso dal processo principale)
- 12. Invio di richiesta http in node.js
- 13. node.js scrivere risposta http allo stream
- 14. Mock una richiesta HTTP che i tempi con HTTPretty
- 15. Risposta a una richiesta POST HTTP idempotente
- 16. Node.js: Invia richiesta http in charset win1251
- 17. Come inviare la richiesta POST HTTP e ricevere risposta?
- 18. Node.JS Tempo di risposta
- 19. Usa Mock HTTP con Goniometro e Gelsomino
- 20. node.js attendere la risposta
- 21. Come terminare una richiesta http node.js in anticipo
- 22. misurazione del tempo di richiesta http con node.js
- 23. getaddrinfo ENOENT errore dalla richiesta HTTP su Node.js
- 24. Problema unicode Node.js con il corpo di risposta HTTP
- 25. Ottieni le intestazioni di risposta dalla richiesta HTTP Ruby
- 26. Ottenere risposta della richiesta http senza lunghezza del contenuto?
- 27. Proxy Node.js con possibilità di modificare le intestazioni di risposta e inserire dati di richiesta aggiuntivi
- 28. Risposta corretta alla richiesta HEAD HTTP sul sito HTTPS
- 29. richiesta http a webhdfs, ma risposta vuota dal server
- 30. Accesso al timestamp di una richiesta HTTP in Node.js
C'è un motivo per cui non includi richieste HTTP reali nel tuo caso di test? Dovrebbe essere reallx fattibile in una configurazione di prova asincrona. –
Sono andato con quello, ma a dire il vero non sembra un test unitario, è più simile a quello dell'integrazione. Ad ogni modo, finora questa è la mia migliore opzione. – 7elephant
Non voglio includere richieste HTTP reali perché rende i miei test più lenti e meno affidabili. Ad esempio, se uno dei servizi che chiamo è DB backed e fallisce perché il DB in QA è stato cancellato (o sincronizzato con prod, o qualsiasi altra cosa), i miei test iniziano a fallire. Inoltre, se non prendi in giro è quasi impossibile forzare in modo affidabile alcuni casi di errore. No, mi piacciono i mock: rendono i test più facili e affidabili. – Kevin