Strange behavor when using `renderHook` with `wrapper` option
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Estagnada
- Stack de tecnologia
- javascript, react
- Domínio
- frontend, testing-qa
Direção de pesquisa
Comece pela reprodução fornecida de renderHook usando a opção wrapper e execute-a com as versões listadas de React, Jest e @testing-library/react. Compare os resultados da invocação de wrapper e do hook com as expectativas nos três testes; está concluído quando o comportamento de wrapper corresponde a essas asserções.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
@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
- Linguagem predominante
- JavaScript
- Estrelas
- 19.7k
- Forks
- 1.2k
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de testing-library/react-testing-library
-
fireEvent.select does not wrap its automatic native focus in actTalvez já em andamento @sergioperezcheco assumiu há 29 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
-
bug: calling configure() without reactStrictMode resets it to undefined, silently disabling strict modeTalvez já em andamento @nimbly1 assumiu há 9 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 35/100
testing-library/react-testing-library#1466 · 2 comentários ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
testing-library/react-testing-library#1459 · 2 comentários ·
-
perf: optimize container lookup with early exitTalvez livre de novo @Ch-Abhinav-Chowdary assumiu há 325 dias e não há nenhum pull request aberto. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 35/100
testing-library/react-testing-library#1430 · 1 comentário ·
-
`fireEvent.mouseEnter` does not forward `relatedTarget` (relatedTarget is the window instead)Talvez já em andamento @swarnim02 assumiu há 343 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
Todas as issues de testing-library/react-testing-library
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
processing/p5.sound.js#132 ·
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
jellyfin/jellyfin-web#8791 ·
Mantenedores costumam responder em até 1 dia
-
bug triage
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
fjaeckel/seriesoftubes#306 ·
Mantenedores costumam responder em até 1 dia
-
ai bug good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 73/100
hugomrdias/playwright-test#753 ·
Mantenedores costumam responder em até 1 dia