0
http-proxy, sinon & rewire를 사용하여 이벤트 이미 터가있는 고속 미들웨어의 단위 테스트를 작성하려고합니다. 내가 겪고있는 문제는 외부 모듈 (이 경우 http-proxy
)을 스터브하면 event.on
라인에 도달 할 때 정의되지 않았기 때문입니다. 소스 코드의이벤트 에미 터를 사용하여 Express 미들웨어를 테스트하는 방법
Heres는 코드 조각 : 테스트 코드의
let middleware = function(options) {
proxy.__proto__ = middleware;
proxy.proxy = buildProxy(extend({}, DEFAULT_OPTIONS, options));
_options = options || {};
proxy.proxy.on('error', function(e, req, res) { // <--- Cannot read property of undefined
logger(req, res, e);
});
proxy.proxy.on('proxyRes', function(proxyRes, req, res) {
logger(req, proxyRes);
});
return proxy;
};
// This method is stubbed
let buildProxy = function(options) {
return httpProxy.createProxyServer(options); // http-proxy module
};
니펫 :
it.only('should call buildProxy and pass along options',() => {
const testOptions = { someOption: true }
let applicationUnderTest = rewire(UNDER_TEST);
let methodUnderTest = applicationUnderTest.__get__('middleware');
let buildProxySpy = sinon.spy();
applicationUnderTest.__set__('buildProxy', buildProxySpy);
methodUnderTest(testOptions)
expect(buildProxySpy.calledOnce).to.be.true;
})
나는이 문제를 해결하는 방법에 대한 제안을 찾고 있었다.
테스트 결과 :
당신이 전화했을 때 뭔가를 반환하기 위해 스파이 지시해야1) Proxy legacy/integration tests should call buildProxy and pass along options:
TypeError: Cannot read property 'on' of undefined