I have a custom module tokens.js with a function which makes requests via npm request module. It looks like this:
'use strict';
let request = require('request');
module.exports.getToken = function(code, cb) {
let url = 'some_url';
request(url, function (err, response, body) {
if (err) {
return cb(err);
} else if (response.statusCode !== 200) {
return cb('err');
}
parseGetResponse(body, function (err, token) {
if (err) {
return cb(err);
}
return cb(null, token);
});
});
I'd like to write unit tests to cover getToken() function, but I have some troubles with mocking request module.
I tried this:
let mocha = require('mocha');
let rewire = require('rewire');
let should = require('should');
let requestMock = {
request: function (url, cb) {
// return cb(); etc
}
}
let tokens = rewire('services/tokens.js');
tokens.__set__('request', requestMock);
But this approach doesn't work:
TypeError: request is not a function
at Object.module.exports.getToken (services/tokens.js)
Actually, it leads to another question: How request module may works without directly calling exported function (request.request(url, cb))? And how should I use rewire with this?
Aucun commentaire:
Enregistrer un commentaire