Tenho uma biblioteca de componentes para a qual estou escrevendo testes de unidade para usar Jest e react-testing-library. Com base em certos adereços ou eventos, quero verificar se certos elementos não estão sendo renderizados.
getByText
, getByTestId
etc., lance e erro react-testing-library
se o elemento não for encontrado, fazendo com que o teste falhe antes do expect
disparo da função.
Como você testa se algo não existe em brincadeira usando a biblioteca react-testing?
fonte
getByTestId
e recebi o mesmo erro. E, eu não verifiquei o FAQ, desculpe. Ótima biblioteca! Você pode modificar sua resposta para incluir `.toBeNull ();queryByText
para aqueles que querem o equivalente agetByText
isso é seguro nuloUse
queryBy
/queryAllBy
.Como você diz,
getBy*
egetAllBy*
lança um erro se nada for encontrado.No entanto, os métodos equivalentes
queryBy*
e emqueryAllBy*
vez disso retornamnull
ou[]
:https://testing-library.com/docs/dom-testing-library/api-queries#queryby
Portanto, para os dois específicos que você mencionou, você usaria
queryByText
equeryByTestId
, mas eles funcionam para todas as consultas, não apenas para esses dois.fonte
queryByTestId
) quando na verdade há dois conjuntos inteiros de métodos, dos quaisqueryByTestId
é um exemplo específico.Você deve usar queryByTestId em vez de getByTestId.
Aqui está um exemplo de código onde eu quero testar se o componente com a id de "carro" não existe.
describe('And there is no car', () => { it('Should not display car mark', () => { const props = { ...defaultProps, base: null, } const { queryByTestId } = render( <IntlProvider locale="fr" messages={fr}> <CarContainer{...props} /> </IntlProvider>, ); expect(queryByTestId(/car/)).toBeNull(); }); });
fonte
getBy * gera um erro ao não encontrar um elemento, então você pode verificar se
expect(() => getByText('your text')).toThrow('Unable to find an element');
fonte
Você pode usar react-native-testing-library "getAllByType" e, em seguida, verificar se o componente é nulo. Tem a vantagem de não precisar definir TestID, também deve funcionar com componentes de terceiros
it('should contain Customer component', () => { const component = render(<Details/>); const customerComponent = component.getAllByType(Customer); expect(customerComponent).not.toBeNull(); });
fonte