Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

324
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!