Tengo una biblioteca de componentes para la que estoy escribiendo pruebas unitarias para usar Jest y react-testing-library. Basado en ciertos accesorios o eventos, quiero verificar que ciertos elementos no se estén renderizando.
getByText
, getByTestId
, Etc tiro y el error en react-testing-library
si no se encuentra el elemento que causa el error de la prueba antes de que los expect
fuegos de función.
¿Cómo se prueba para algo que no existe en broma usando react-testing-library?
fuente
getByTestId
y obtuve el mismo error. Y no miré las preguntas frecuentes, lo siento. ¡Gran biblioteca! ¿Puede modificar su respuesta para incluir el `.toBeNull ();queryByText
para aquellos que quieran el equivalente agetByText
eso es nulo seguroUtilice
queryBy
/queryAllBy
.Como dices,
getBy*
ygetAllBy*
arroja un error si no se encuentra nada.Sin embargo, los métodos equivalentes
queryBy*
yqueryAllBy*
en su lugar devuelvennull
o[]
:https://testing-library.com/docs/dom-testing-library/api-queries#queryby
Entonces, para los dos específicos que mencionó, en su lugar usaría
queryByText
yqueryByTestId
, pero estos funcionan para todas las consultas, no solo para esos dos.fuente
queryByTestId
) cuando de hecho hay dos conjuntos completos de métodos, de los cualesqueryByTestId
es un ejemplo específico.Tienes que usar queryByTestId en lugar de getByTestId.
Aquí un ejemplo de código en el que quiero probar si el componente con la identificación de "coche" no 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(); }); });
fuente
getBy * arroja un error cuando no encuentra un elemento, por lo que puede verificarlo
expect(() => getByText('your text')).toThrow('Unable to find an element');
fuente
Puede usar react-native-testing-library "getAllByType" y luego verificar si el componente es nulo. Tiene la ventaja de no tener que configurar TestID, también debería funcionar con componentes de terceros
it('should contain Customer component', () => { const component = render(<Details/>); const customerComponent = component.getAllByType(Customer); expect(customerComponent).not.toBeNull(); });
fuente