Aula 80
Teste da prop checkedOptions do CheckboxList; comparamos toBe() e toEqual() novamente
Summary
Resumo do Transcript
O vídeo aborda a verificação da propriedade check options
em uma lista de checkboxes dentro de um componente de formulário no React. O apresentador adiciona testes para garantir que check options
seja igual à propriedade frutas
do estado do componente.
Principais Pontos:
-
Implementação do Teste:
- O teste verifica se a propriedade
checked options
do componenteCheckbox List
corresponde ao estado do componente, especificamente à propriedadefrutas
. - A propriedade
frutas
é um objeto com chaves representando frutas e valores booleanos (false significa que o checkbox não está marcado).
- O teste verifica se a propriedade
-
Uso do Enzyme:
- O Enzyme é utilizado para capturar o
Checkbox List
e verificar a propriedadechecked options
. - O estado do componente é acessível através de
wrapper.instance().state
.
- O Enzyme é utilizado para capturar o
-
Testando Referências:
- O teste usa
toBe
para verificar se os objetos são a mesma referência. - Um exemplo é fornecido onde um objeto com valores idênticos a
frutas
é criado, mas não passa o teste porque não é a mesma referência.
- O teste usa
-
Resolvendo Falhas:
- O apresentador demonstra que se um objeto literal ou uma cópia do estado for passado, o teste falhará.
- É importante garantir que a propriedade que está sendo testada seja a própria do estado do componente e não uma cópia.
-
Conclusão:
- Com isso, o teste para a
check options
é realizado com sucesso. - O apresentador encerra mencionando que no próximo vídeo será abordado o evento
onChange
parafrutas
.
- Com isso, o teste para a
Observações:
- O cuidado com referências de objetos em JavaScript é destacado, especialmente entre
toBe
(verifica referências) etoEqual
(verifica igualdade de valores). - A importância de testar a propriedade diretamente do estado é enfatizada para evitar resultados enganosos.
Este resumo fornece uma visão concisa dos principais pontos discutidos no vídeo.
Video Transcript
Olá pessoal, estamos de volta e agora vamos verificar se o check options, essa prop aqui,
foi definido corretamente para o checkbox list.
Vamos lá?
Então aqui, depois do último teste, a gente fez aqui, vamos adicionar outro teste.
E esse teste vai verificar se o check options é realmente o list.state.frutas,
aquela propriedade frutas do estado do componente por no lar.
Leve incluir checkbox list e leva prop checked options com o valor da propriedade frutas
do estado do componente.
Certo?
Componente nesse caso, referindo a formulário.
Note que na implementação aqui no lado de baixo da tela, e está passando vez ponto state
frutas, que a gente definiu inicialmente, se você se lembra, vamos lá em cima, racha lá para cima,
para o state aqui, a gente deu property initializers, em vez de passar, definir o estado inicial
no constructor.
A gente definiu essa propriedade frutas com um objeto cujos de propriedades, referindo
a cada fruta, nesse caso a cada checkbox, e tem o valor false, que significa que o checkbox
não está marcado, se for true significa que está marcado.
A gente espera que passe esse objeto aqui, esse objeto como prop checked options ao
checkbox list.
Então, a maneira de fazer isso é dessa maneira, você vai pegar daquela mesma maneira e encontrar
uma fineware, vamos encontrar primeiro o property checkbox list, vamos ver, a mesma
maneira que a gente fez anteriormente, esse cara vai capturar o checkbox list, a gente
vai verificar checkbox, a prop checked options, se esse cara, esperamos que seja o que, se
o bequem, que seja o estado, o propriedade valor desse fruto no estado do componente,
para acessar o estado do componente que foi montado, que foi criado um enzyme wrapper,
você usa o variável do wrapper, ponto instance, ou desculpa, ponto state, certo?
Dessa maneira que, vamos dar um consolago aqui para ver se realmente funcionou, se é isso
mesmo, consolago component, ponto state, ah, desculpa, component, ponto state, deixa eu
comentar esse cara aqui, eu vou dar um consolago só do component.state, dessa maneira, você
vai ver aqui embaixo que ele realmente retorna o estado do componente formulário, que foi
aquele que foi montado e que a gente criou um enzyme wrapper e armazenou na variável component.
Agora a gente não precisa de todos esses caras, a gente só precisa de frutas, então se você
quiser só frutas, só fazer assim, adicionou um argumento chamado o nome da propriedade,
component.state frutas, certo? Então ele vai pegar esse cara, vamos lá, component.state
frutas aqui e ele vai incluir o teste passo, né? Deixa eu remover o consolago, certo?
Então ele usa o 2B, verifica se esse objeto aqui, o valor desse objeto aqui é o mesmo
desse objeto, então obviamente que nesse caso a gente tem que ser a mesma referência
por isso que usando o 2B funciona corretamente, não, certo?
Eu quero te mostrar uma coisa aqui, já que a gente está nesse negócio do 2B e 2E, se a gente usar o,
vamos ver aqui, vamos supor que eu fiz um objeto com, que é a cópia do estado inicial aqui,
o valor da frutas, dessa maneira aqui, é a mesma coisa, o mesmo valor, mais um objeto
diferente, então se eu checar o checkbox, o checkoptions e eu putar aqui em vez do component.state
frutas, eu lutar esses frutas aqui que a gente definiu aqui, vamos ver o que acontece.
Então o teste falhou, embora que os objetos sejam os mesmos, né? Então é aquele detalhe
que a gente já aprendeu do 2B versus do 2E, nesse caso ele está verificando, esse
cara aqui tem a mesma referência desse outro cara aqui, nesse caso não porque frutas é um objeto
aqui e a gente definiu em outro local, não se refere ao próprio, a propriedade que frutas do estado,
do próprio componente, por isso que falha, mas se você botar 2E, obviamente vai funcionar.
Certo? Mas também tem um detalhe de, ele não também não checa se você usar dessa maneira,
se eu poderia também ter definido um objeto aqui, em vez de passar o destater frutas, eu passo
o próprio objeto dessa maneira, então eu passo um objeto assim, também vai passar, opa,
mas isso aqui também está errado, né? Então por isso que se você usar aquela outra maneira,
em vez de definir um objeto aqui, você checa, verifica se é diretamente o estado do componente,
vamos ver o que acontece. Opa, você salvar, agora falhou, então realmente esse cara aqui
está verificando, você realmente passou propriedade do estado em vez de um objeto literal dessa maneira.
Então reverter no que para a implementação com a reta, veremos que o teste agora passa,
então por isso que eu prefiro essa maneira aqui, em vez de definir um objeto e usar o 2E, nesse caso,
certo? Você tem que ver mesmo se está passando a propriedade que vem do estado do componente,
e não é um objeto literal que poderia ser idêntico ao objeto do estado, né? Frutas, objeto frutas do estado.
Então com isso a gente termina esse teste para o project options.
Certo? Então até o próximo vídeo, a gente termina com o one change, on frutas change.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: