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

156
Vistas
¿Cómo probar una composición de funciones con efectos secundarios sin usar simulacros?

Tengo una función, MyComposedFunction , que es la composición de funciones de 3 funciones, la segunda función, fn2 , realiza una solicitud POST (un efecto secundario) utilizando el resultado de fn1 y pasa este valor a fn3 .

 const fn2 = async (fn1Result) => { const result = await fetch(fn1Result.url, fn1Result.payload); // some business logic return fn2Results; }; const MyComposedFunction = compose(fn3, fn2, fn1); // My Test expect(MyComposedFunction('hello world')).toBe('expected result');

Me gustaría evitar escribir pruebas unitarias para fn3 , fn2 y fn1 y, en su lugar, solo probar MyComposedFunction . Mi razón es que no debería importar si MyComposedFunction usa compose(...) o es una función gigante larga mientras MyComposedFunction funcione.

¿Es posible escribir una prueba para MyComposedFunction sin tener que simular fn2 ?

Creo que esta debe ser una situación relativamente común al intentar hacer una programación funcional en JavaScript, pero hasta ahora no he podido encontrar un recurso útil.

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

0

Puede depender inyectar fetch en su función así

 const fn2Thunk = (fetcher = fetch) => async (fn1Result) => { const result = await fetcher(fn1Result.url, fn1Result.payload); // some business logic return fn2Results; }; const fetchMock = async () => ({ result: "blah" }) const MyComposedFunctionTest = compose(fn3, fn2Thunk(fetchMock), fn1); // My Test const result = await MyComposedFunctionTest('hello world') expect(result).toBe('expected result');
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