Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Para entender o mock implementation

no useSaldo() temos

setSaldo(await buscaSaldo())

No mockImplementation não deveriamos levar em conta que o buscaSaldo retorna uma promise tambem? Como fariamos?

buscaSaldo.mockImplementation(() => {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(mockSaldo.value)
        }, 200)
    })
})

Assim?

1 resposta
solução!

Oi Amir!

Sim, você está no caminho certo! A sua intuição sobre mockar o retorno assíncrono de buscaSaldo com uma Promise está correta.

No gabarito, a implementação do mockImplementation para buscaSaldo retorna diretamente o valor do saldo (mockSaldo.valor). Isso funcionaria apenas para cenários em que buscaSaldo retorna um valor síncrono, o que não é o caso do seu código, já que buscaSaldo retorna uma Promise.

Para mockar corretamente o comportamento assíncrono de buscaSaldo, você precisa retornar uma Promise do mockImplementation. A sua sugestão de usar new Promise com setTimeout para simular um atraso na resolução da promise está perfeita!

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

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