1
resposta

[Dúvida] testes assincronos

preciso cobrir essas linhas de um projeto:

useEffect(() => {
        if (getGroups.data) {
            const aux: Group[] = getGroups?.data?.Co2tGetAllGroups.map(
                (o: Group) => {
                    return {
                        id: o.id,
                        name: o.name,
                        created_at: o.created_at,
                        modified_at: o.modified_at,
                        company_id: o.company_id,

                    };
                }
            );
            setData(aux);
        }

        console.log(getGroups);
        
        
    }, [getGroups.loading, getGroups.data]);

nao tenho ideia de como fazer isso. essa variavel getGroups vem de uma query:

const getGroups = useQuery(QUERY_ALL_GROUPS, {
        context: {
            headers: {
                Authorization: `Bearer ${keycloak.token}`,
            },
        },
    });
    ```
1 resposta

Olá, Joao, como vai?

Para cobrir essa parte do código com testes assíncronos, você pode simular o comportamento da query getGroups. No caso do useEffect, uma abordagem seria testar diferentes estados do getGroups, como loading, data e possíveis erros. Para isso, você pode usar a biblioteca @testing-library/react junto com o jest para mockar os resultados.

Você pode, por exemplo, mockar o retorno de useQuery para simular o comportamento desejado e verificar se os dados aparecem corretamente na tela. Isso cobre o caso onde getGroups.data existe e é processado no useEffect.

Como nós não conhecemos o contexto dos seus testes, vou deixar aqui alguns materiais auxiliares que você pode explorar para realizar esses testes:

Alguns estão em inglês mas você consegue ler normalmente com a tradução automática do navegador.

Qualquer dúvida, o fórum está à disposição!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!