1
resposta

Solução para o erro "The module factory of jest.mock() is not allowed to reference any out-of-scope variables."

Olá.

Nem sempre eu uso o mesmo nome para as variáveis que são criadas nos vídeos. Dessa vez, por causa disso, me deparei com um problema e um erro ao usar o jest.mock().

Meu código estava assim:

const navegarPara = jest.fn();

jest.mock('react-router-dom', () => {
    return {        
        useNavigate: () => navegarPara
    }
})

Isso gerava o seguinte erro:

"ReferenceError: (...): The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.

Invalid variable access: navegarPara

Pesquisando no Stack Overflow, vi que a solução é declarar a variável com o prefixo "mock", ou seja ao invés de "navegarPara", tem que ser "mockNavegarPara". Tem alguma coisa a ver com lazy load e hoisting, mas aí ainda é muito avançado para eu entender a fundo.

Então o código deve ser assim:

const mockNavegarPara = jest.fn();

jest.mock('react-router-dom', () => {
    return {        
        useNavigate: () => mockNavegarPara
    }
})

Curiosamente, no vídeo a variável é declarada como "mockNavegacao" e por isso o erro não ocorreu durante a aula :)

1 resposta

Olá Matheus, tudo bem?

Fico feliz que você tenha conseguido resolver o problema e obrigada por compartilhar a solução conosco. Assim você vai ajudar outras pessoas com toda certeza.

Um abraço e bons estudos.