Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

318
Vistas
Probar la función javascript que llama a otra función que instancia un nuevo objeto - Sinon, mocha

En una aplicación nodejs, estoy tratando de escribir una prueba para una función que llama a otra función que crea un nuevo objeto y luego se llama a un método de ese objeto construido.

Este es el código, service.js, que estoy tratando de probar;

 // service.js class Rectangle { constructor(height, width) { this.height = height; this.width = width; } calcArea(){ return this.height * this.width } } const rectBuilderFunc = (height, width) => new Rectangle(height, width); const functionToBeTested = (height, width) => { const rect = rectBuilderFunc(height, width); const area = rect.calcArea(); return area; } module.exports ={ functionToBeTested, rectBuilderFunc }

Estoy usando sinon, mocha y chai en mis clases de prueba. Estoy tratando de afirmar que estoy llamando a la función de construcción con los parámetros requeridos y al final se construye un objeto de rectángulo y se llama a su método de cálculo. Termino una prueba similar a esta;

 const expect = require('chai').expect; const sinon = require('sinon'); const service = require('./service'); describe('test rectangle', () => { it('should build a rectangle and calculate the area', (done) => { //given const rectangleMock = { calcArea: sinon.stub() }; service.rectBuilderFunc.withArgs(4,5).returns(rectangleMock); //when service.functionToBeTested(4,5); //then expect(service.rectBuilderFunc).to.be.calledOnce; expect(service.rectBuilderFunc).to.be.calledWith(4,5); expect(rectangleMock.calcArea).to.be.calledOnce; expect(rectangleMock.calcArea).to.be.calledWith(4,5); }); });

El problema es que sigo obteniendo rectBuilderFunc no es un error de función. Cualquier idea para tener una prueba de aprobación es apreciada. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Ese error ocurre porque rectBuilderFunc aún no es un código auxiliar en el que ha llamado a .withArgs aquí:

 service.rectBuilderFunc.withArgs(4,5).returns(rectangleMock);

En cambio, necesitas algo como:

 const rectBuilderStub = sinon.stub(service, 'rectBuilderFunc'); rectBuilderStub.withArgs(4,5).returns(rectangleMock);

Documentos auxiliares de Sinon: Documentos . La sección .withArgs() está aproximadamente a 1/4 del camino hacia abajo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda