사용자 지정 모듈 tokens.js은 요청 모듈을 통해 요청을하는 기능이 있습니다. getToken() 기능을 다루을 테스트요청 모듈을 재선으로 모의하는 방법은 무엇입니까?
'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);
});
});
내가 단위를 쓰고 싶습니다,하지만 난 요청 모듈을 조롱하는 몇 가지 문제가 있습니다 그것은 다음과 같습니다.
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);
그러나이 방법이 작동하지 않습니다 :
TypeError: request is not a function
at Object.module.exports.getToken (services/tokens.js)
사실, 다른 질문에 리드 :
나는이 시도 어떻게 요청 모듈 수도 직접 수출 부르심 기능이없는 작품 (request.request (url, cb))? 그리고 이것으로 어떻게 재 연결해야합니까?
node.j에서 DI 접근 방식에 대해 생각조차하지 않았습니다. 나는이 방법을 시도 할 것이다, 고마워. – t1maccapp
https://stackoverflow.com/questions/46952843/mock-module-which-does-not-exist/46954753 '유성/유성'위치를 조롱하고 싶거나 일반적으로 유성 가져 오기 유성을 유추하고 싶습니다/meteor'''는 유성 테스트가 아닌'npm run mocha-tests'로 테스트를 시작한 이후로 존재하지 않습니다. 불행하게도 많은 코드가'Meteor' 환경에 의존하고 있습니다. – Gobliins