Olá, na hora de usar o mock, eu coloquei somente o useListaDeParticipantes como valor da const participantes, e deu sucesso, será que vai dar certo assim? ou futuramente ira dar alguma problema? vou mandar o print..
!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, na hora de usar o mock, eu coloquei somente o useListaDeParticipantes como valor da const participantes, e deu sucesso, será que vai dar certo assim? ou futuramente ira dar alguma problema? vou mandar o print..
!
Salve, Sérgio!
Vale a análise pra entender porque o seu teste passou:
describe('uma lista preenchida de participantes', () => {
const participantes = useListaDeParticipantes // participantes aqui é a função useListaDeParticipantes
test('deve ser renderizada com elementos', () => {
render(<RecoilRoot>
<ListaParticipantes />
</RecoilRoot>)
const itens = screen.queryAllByRole('listitem') // como não temos um mock, não temos participantes nenhum. logo, itens é um array vazio
expect(itens).toHaveLength(participantes.length) // participantes.length retorna o número de argumentos esperados pela função, que nesse caso é zero. logo, o teste passa
})
})
A idéia do mock é isolarmos os fatores pra ter certeza que estamos testando o cenário correto ;) Nesse caso, o seu teste passou por pura coincidência, porque a função não recebe nenhum parametro.
length de uma função?Em JavaScript, a propriedade length de uma função retorna o número de argumentos esperados pela função, ou seja, a quantidade de parâmetros formalmente definidos para essa função.
Por exemplo:
function minhaFuncao(a, b, c) {
return a * b * c;
}
Se você usar minhaFuncao.length, o JavaScript retornará 3, porque a função minhaFuncao espera três argumentos: a, b e c.
É importante notar que a propriedade length não leva em consideração os argumentos padrão (definidos com um valor na declaração da função) nem os argumentos rest (definidos com ...argName).
Por exemplo:
function minhaFuncao2(a, b, c = 0) {
return a * b * c;
}
console.log(minhaFuncao2.length); // Isto irá imprimir 2, não 3
function minhaFuncao3(a, b, ...args) {
// Faz algo aqui
}
console.log(minhaFuncao3.length); // Isto irá imprimir 2, não 3
No primeiro caso, c é um argumento padrão, e no segundo, ...args é um argumento rest. Ambos não são contabilizados na propriedade length.