Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

162
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda