Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida sobre o forEach do teste

No código do teste da função realizarSorteio temos o seguinte trecho de código:

    test('cada participante não sorteie o próprio nome', () => {

        const participantes = [
            'Ana',
            'Catarina',
            'Juliana',
            'Joao',
            'Luis',
            'Natalia'
        ]

        const sorteio = realizarSorteio(participantes)
        participantes.forEach(participante => {
            **const amigoSecreto = sorteio.get(participante)**
            expect(amigoSecreto).not.toEqual(participante)
        })
    })

Não entendi como a linha const amigoSecreto = sorteio.get(participante) retorna o amigo secreto do participante. Qual é o retorno de sorteio.get(participante) ?

2 respostas

Lendo sobre objetos Map entendi que quando chamamos new Map() ele pareia uma key com um valor, o que ocorre no hook realizarSorteio que mockamos pra fazer o teste.

Isso quer dizer que a linha const amigoSecreto = sorteio.get(participante) retorna o valor pareado com o participante, que nunca será igual ao nome do participante por causa da lógica do hook, correto?

Acho que é essa a resposta, mas caso alguém tenha alguma explicação melhor eu agradeceria :))

fonte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

solução!

O método get é um método embutido do objeto Map que retorna o valor correspondente a uma chave específica.

Neste caso, participante é usado como a chave, e "sorteio.get(participante)" retorna o valor associado a essa chave, que é o amigo secreto do participante.

Portanto, const amigoSecreto = sorteio.get(participante) está atribuindo o amigo secreto do participante à variável amigoSecreto. A linha expect(amigoSecreto).not.toEqual(participante) está verificando se o participante não tirou o próprio nome no sorteio.

Não sei se consegui ajudar, mas se não ficou claro me avise que aí vamos conversando até que fique tudo bem claro.