Strange behavor when using `renderHook` with `wrapper` option
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, react
- Área
- frontend, testing-qa
Línea de trabajo
Parte de la reproducción proporcionada de renderHook usando la opción wrapper y ejecútala con las versiones indicadas de React, Jest y @testing-library/react. Compara los resultados de la invocación de wrapper y del hook con las expectativas de las tres pruebas; se considera terminado cuando el comportamiento de wrapper coincide con esas aserciones.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
@testing-library/reactversion:14.3.1+15.0.7- Testing Framework and version:
{
"devDependencies": {
"@testing-library/react": "15.0.7"
"jest": "29.7.0",
"jest-environment-jsdom": "29.7.0",
"react": "18.3.1"
}
}
Relevant code or config:
{
"engines": {
"node": "20",
"npm": "10",
"yarn": "PLEASE USE NPM"
}
}
What you did:
import { renderHook } from '@testing-library/react';
import React, { ReactElement } from 'react';
interface WrapperProps {
color?: string;
onInvoke?: jest.Mock;
children?: any;
}
let mockWrapperFn = jest.fn();
const Wrapper = (props?: WrapperProps): ReactElement => {
const bgColor = props?.color ?? 'black';
const onInvoke = props?.onInvoke ?? mockWrapperFn;
console.log(`GIVEN PROPS color: ${bgColor}`);
onInvoke(`INSIDE WRAPPER: ${bgColor}`);
return <div style={{ backgroundColor: bgColor }}>hello</div>;
};
const useHookTest = (onInvoke: jest.Mock) => {
onInvoke('INSIDE HOOK');
return 'hello-guy';
};
afterEach(() => jest.clearAllMocks());
test('not call hook with custom wrapper', () => {
const mockHookFn = jest.fn();
const { result } = renderHook(() => useHookTest(mockHookFn), {
wrapper: () => Wrapper({ color: 'red', onInvoke: mockWrapperFn }),
});
expect(mockWrapperFn).toHaveBeenCalledTimes(1);
expect(mockWrapperFn).toHaveBeenLastCalledWith('INSIDE WRAPPER: red');
expect(mockHookFn).toHaveBeenCalledTimes(1);
expect(mockHookFn).toHaveBeenLastCalledWith('INSIDE HOOK');
expect(result.current).toBe('hello-guy');
});
test('not call hook with default wrapper', () => {
const mockHookFn = jest.fn();
const { result } = renderHook(() => useHookTest(mockHookFn), { wrapper: Wrapper });
expect(mockWrapperFn).toHaveBeenCalledTimes(1);
expect(mockWrapperFn).toHaveBeenLastCalledWith('INSIDE WRAPPER: black');
expect(mockHookFn).toHaveBeenCalledTimes(1);
expect(mockHookFn).toHaveBeenLastCalledWith('INSIDE HOOK');
expect(result.current).toBe('hello-guy');
});
test('call hook without wrapper', () => {
const mockHookFn = jest.fn();
const { result } = renderHook(() => useHookTest(mockHookFn));
expect(mockWrapperFn).toHaveBeenCalledTimes(0);
expect(mockHookFn).toHaveBeenCalledTimes(1);
expect(mockHookFn).toHaveBeenLastCalledWith('INSIDE HOOK');
expect(result.current).toBe('hello-guy');
});
What happened:
renderHook does not render hook with wrapper option
- Lenguaje dominante
- JavaScript
- Estrellas
- 19.7k
- Forks
- 1.2k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de testing-library/react-testing-library
-
fireEvent.select does not wrap its automatic native focus in actPosiblemente ocupada @sergioperezcheco la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
bug: calling configure() without reactStrictMode resets it to undefined, silently disabling strict modeQuizá libre de nuevo @suhailopensource la tomó hace 75 días y no hay ningún pull request abierto. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
testing-library/react-testing-library#1466 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
testing-library/react-testing-library#1459 · 2 comentarios ·
-
perf: optimize container lookup with early exitQuizá libre de nuevo @Ch-Abhinav-Chowdary la tomó hace 301 días y no hay ningún pull request abierto. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 35/100
testing-library/react-testing-library#1430 · 1 comentario ·
-
`fireEvent.mouseEnter` does not forward `relatedTarget` (relatedTarget is the window instead)Posiblemente ocupada @swarnim02 la tomó hace 319 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
Todos los issues de testing-library/react-testing-library
Issues similares
-
[Bug] Dev image build fails: `npm install` in the root Dockerfile runs out of memory (exit 134)Posiblemente ocupada @andest01 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
good first issue hacktoberfest help wanted
Dificultad 2/5 Menos de una hora Aptitud para principiantes 76/100
pacocartones/free-llm-api-hub#262 ·
Los mantenedores suelen responder en 1 día
-
agent-task risk:low
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
guyellis/http-status-check#512 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
microsoft/playwright#43327 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/TypeScript#64758 ·
Los mantenedores suelen responder en 1 día