2017-03-23 3 views
0

J'ai écrit quelques tests unitaires et j'ai remarqué que je n'arrive pas à trouver un bon moyen de tester les fonctions asynchrones. Donc j'ai trouvé nock. Cela semble cool, seulement si ça a marché. Je manque clairement quelque chose ...Comment obtenir la réponse de nock

import nock from 'nock'; 
import request from 'request'; 

const profile = { 
    name: 'John', 
    age: 25 
}; 

const scope = nock('https://mydomainname.local') 
    .post('/api/send-profile', profile) 
    .reply(200, {status:200}); 

request('https://mydomainname.local/api/send-profile').on('response', function(request) { 
    console.log(typeof request.statusCode); // this never hits 
    expect(request.statusCode).to.equal.(200); 
}); 

request ne se produit jamais, alors comment puis-je tester si Nock effectivement retourné {status:200}? J'ai également essayé fetch et http appels réguliers. Ce qui me fait penser que c'est quelque chose avec mon code Nock? Merci d'avance pour votre aide!

Répondre

1

Nock ne retourne pas {status:200} parce qu'il est l'interception POST demande, mais la déclaration request envoie GET demande.

Il semble que vous voulez intercepter POST demande avec profile spécifié? Le code serait:

var nock = require('nock'); 
var request = require('request'); 

const profile = { 
    name: 'John', 
    age: 25 
}; 

const scope = nock('https://mydomainname.local') 
    .post('/api/send-profile', profile) 
    .reply(200, {status:200}); 

request.post('https://mydomainname.local/api/send-profile', {json: {name: 'John', age: 25}}).on('response', function(request) { 
    console.log(request.statusCode); // 200 
});