Estoy tratando de probar una función que se declara dentro de otra función (Padre). Intenté algunas cosas pero no pude probar eso. Estoy usando la biblioteca de reacción y el marco de prueba JEST en el proyecto.
Aquí está la función del archivo de servicio (service.ts) que estoy tratando de probar:
import { useThisHook } from './base-hooks'; export function someFunction(param: string) { const [ resolveFunction, , { loading, error }, ] = useThisHook(); const childFun = (param : number) => { resolveFunction(someArguments); } return{ someValue: childFun } }Aquí está el código del archivo de especificaciones:
import * as SomeHooks from './base-hooks'; import * as Service from './service'; describe('Service function', () => { beforeEach(() => { jest.spyOn(SomeHooks, 'useThisHook').mockReturnValue( { //Some Value } ); }); test('Some function test', () => { const someFunctionResponse = Service.someFunction('string'); expect(someFunctionResponse).toEqual({ someValue: expect.any(Function), }); }); }); Hasta aquí está bien. También se están pasando las pruebas, pero el problema es que childFn no está recibiendo la cobertura y ese es mi requisito. Soy nuevo en React y Jest. No soy capaz de entender cómo puedo lograr eso. Intenté muchas cosas pero no tuve éxito.
Su childFn no está siendo llamado, por eso no está recibiendo cobertura.
Puede refactorizar todo el childFn a un nuevo gancho y probarlo individualmente con algo como react-hooks-testing-library .
O puede separar el childFn y declararlo fuera del alcance de someFunction , pasar la resolveFunction y luego probarlo.
Solo obtiene cobertura si el código se llama realmente, no cuando se declara.