1
resposta

Erro no toBeInTheDocument

Estou recebendo um erro na função toBeInTheDocument, ela não está sendo encontrada. Já reinstalei todos os pacotes e nada, podem me dar uma solução? Segue o erro abaixo:

FAIL  src/App.test.js
  Componente principal
    ✕ Mostrar o nome do banco (67 ms)

  ● Componente principal › Mostrar o nome do banco

    expect(received).toBeInTheDocument()

    received value must be an HTMLElement or an SVGElement.
    Received has type:  array
    Received has value: [<h1>ByteBank</h1>]

       8 |     render(<App />);
       9 |     
    > 10 |     expect(screen.getAllByText('ByteBank')).toBeInTheDocument();
         |                                             ^
      11 |   })
      12 | });

      at __EXTERNAL_MATCHER_TRAP__ (node_modules/expect/build/index.js:342:30)
      at Object.toBeInTheDocument (node_modules/expect/build/index.js:343:15)
      at Object.<anonymous> (src/App.test.js:10:45)

Segue meu código:

import React from 'react';
import { render, screen } from '@testing-library/react';

import App from './App';

describe('Componente principal', () => {
  it('Mostrar o nome do banco', () => {
    render(<App />);

    expect(screen.getAllByText('ByteBank')).toBeInTheDocument();
  })
});
1 resposta

Fala ai Jonathan, tudo bem? No você está tentando verificar o toBeInTheDocument para uma coleção (array), isso porque ao buscar o elemento está utilizando a função getAllByText.

Tente mudar a função para: getByText, assim vai retornar apenas uma referência.

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software