Estoy tratando de stub npm paquete phin pero no tengo mucha suerte. ¿Alguna sugerencia por favor?
A continuación se muestra una versión simplificada del código.
solicitudHelper.js
const phin = require('phin'); async function request(req) { return await phin(req); } module.exports = {request}requestHelper.prueba.js
const requestHelper = require('./requestHelper.js'); const phin = require('./node_modules/phin'); sinon.stub(phin.prototype, 'constructor').returns(true); const result = await requestHelper.request({"something":"something"}) expect(result).to.eql(true); sinon.stub(phin.prototype, 'constructor').returns(true) =>
Error: tratando de stub propiedad 'constructor' de indefinido
Dado que sinon no admite la importación de funciones independientes de stub desde un módulo, ¿ es posible aplicar stub a una función de utilidad independiente? . Puede usar proxyquire para hacer esto.
Además, creé una demostración sin instalar el paquete phin , así que deshabilité callThru para proxyquire .
Si callThru está deshabilitado, puede desconectar módulos que ni siquiera existen en la máquina en la que se ejecutan sus pruebas
requestHelper.js :
const phin = require('phin'); async function request(req) { return await phin(req); } module.exports = { request }; requestHelper.test.js :
const proxyquire = require('proxyquire').noCallThru(); const sinon = require('sinon'); describe('69852777', () => { it('should pass', async () => { const phinStub = sinon.stub().resolves(true); const requestHelper = proxyquire('./requestHelper', { phin: phinStub, }); const result = await requestHelper.request({ something: 'something' }); sinon.assert.match(result, true); sinon.assert.calledWithExactly(phinStub, { something: 'something' }); }); });resultado de la prueba:
69852777 ✓ should pass (1581ms) 1 passing (2s) ------------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ------------------|---------|----------|---------|---------|------------------- All files | 100 | 100 | 100 | 100 | requestHelper.js | 100 | 100 | 100 | 100 | ------------------|---------|----------|---------|---------|-------------------