antes de postar esta questão, tentei pesquisar em sqa stackexchange, mas não encontrei nenhuma postagem sobre raso e renderização lá, então espero que alguém possa me ajudar aqui.
Quando devo usar raso e render no teste de componentes de reação? Com base nos documentos do airbnb, fiz algumas opiniões sobre a diferença entre os dois:
Uma vez que raso está testando componentes como uma unidade , ele deve ser usado para componentes 'pais'. (por exemplo, tabelas, invólucros, etc.)
Render é para componentes filhos.
A razão pela qual fiz esta pergunta é que estou tendo dificuldade para descobrir qual devo usar (embora os documentos digam que são muito semelhantes)
Então, como faço para saber qual usar em um cenário específico?
Respostas:
De acordo com os documentos Enzyme :
mount(<Component />)
para Full DOM render é ideal para casos de uso onde você tem componentes que podem interagir com DOM apis, ou pode exigir o ciclo de vida completo para testar totalmente o componente (ou seja, componentDidMount etc.)vs.
shallow(<Component />)
para a renderização superficial é útil para restringir-se a testar um componente como uma unidade e para garantir que seus testes não estejam afirmando indiretamente sobre o comportamento de componentes filhos.vs.
render
que é usado para renderizar componentes de reação ao HTML estático e analisar a estrutura HTML resultante.Você ainda pode ver os "nós" subjacentes em uma renderização rasa, então, por exemplo, você pode fazer algo como este exemplo (ligeiramente artificial) usando AVA como o executor de especificação:
Observe que a renderização , configuração de adereços e localização de seletores e até eventos sintéticos são suportados pela renderização superficial, então na maioria das vezes você pode apenas usar isso.
Mas, você não será capaz de obter o ciclo de vida completo do componente, então se você espera que algo aconteça no componentDidMount, você deve usar
mount(<Component />)
;Este teste usa o Sinon para espionar o componente
componentDidMount
O texto acima não passará com renderização superficial ou renderização
render
fornecerá apenas o html, então você ainda pode fazer coisas como esta:espero que isto ajude!
fonte
A diferença entre shallow () e mount () é que shallow () testa componentes isolados dos componentes filhos que eles renderizam, enquanto mount () vai mais fundo e testa os filhos de um componente.
Para raso (), isso significa que se o componente pai renderizar outro componente que não consegue renderizar, então uma renderização rasa () no pai ainda será aprovada.
fonte