Ich versuche, den Griff des Tools Nock zu bekommen, um die Anfrage und Antwort von meinem Code die Anrufe zu verspotten. Ich benutze npm-Anfrage als einen einfachen HTTP-Client, um die Back-End-REST-API, Chai für die Erwartungsbibliothek und Mocha, um meine Tests zu starten. Hier ist der Code, den ich für die Tests haben:Mocking NodeJS Anfrage und Antwort mit Nock
var nock = require('nock');
var storyController = require('../modules/storyController');
var getIssueResponse = {
//JSON object that we expect from the API response.
}
it('It should get the issue JSON response', function(done) {
nock('https://username.atlassian.net')
.get('/rest/api/latest/issue/AL-6')
.reply(200, getIssueResponse);
storyController.getStoryStatus("AL-6", function(error, issueResponse) {
var jsonResponse = JSON.parse(issueResponse);
expect(jsonResponse).to.be.a('object');
done();
})
});
Und hier ist der Code, die GET-Anforderung zu tun:
function getStoryStatus(storyTicketNumber, callback) {
https.get('https://username.atlassian.net/rest/api/latest/issue/' + storyTicketNumber, function (res) {
res.on('data', function(data) {
callback(null, data.toString());
});
res.on('error', function(error) {
callback(error);
});
})
}
Dieser einzige Test ist vorbei und ich verstehe nicht, warum. Es scheint, als würde es tatsächlich einen Anruf tätigen und nicht meine gefälschte Nock-Anfrage/Antwort verwenden. Wenn ich den Nock Abschnitt oder Änderung Kommentar:
.reply(200, getIssueResponse) to .reply(404)
Es bricht nicht den Test und nichts ändern, ich bin nicht mit meinem Nock Variable etwas zu tun. Kann mir bitte jemand ein klares Beispiel erklären, wie man die Anfrage und Antwort in meinem NodeJS-HTTP-Client mit Nock überspitzt?
wo ist Antwortende-Rückruf? – Dhirendra
@Dhirendra Ich denke, es ist ziemlich klar in den geposteten Code, der Rückruf ist meine Funktion, die ich übergeben "Callback" und die Antwort ist data.toString() –