Saya memiliki pustaka komponen yang saya tulis untuk unit test menggunakan Jest dan react-testing-library. Berdasarkan alat peraga atau peristiwa tertentu, saya ingin memverifikasi bahwa elemen tertentu tidak dirender.
getByText
,, getByTestId
dll. melempar dan membuat kesalahan react-testing-library
jika elemen tidak ditemukan yang menyebabkan pengujian gagal sebelum expect
fungsi diaktifkan.
Bagaimana Anda menguji sesuatu yang tidak ada dalam lelucon menggunakan react-testing-library?
sumber
getByTestId
dan mendapatkan kesalahan yang sama. Dan, saya tidak memeriksa FAQ, maaf. Perpustakaan yang bagus! Dapatkah Anda mengubah jawaban Anda untuk menyertakan `.toBeNull ();queryByText
bagi mereka yang menginginkan yang setara dengangetByText
itu adalah nol amanGunakan
queryBy
/queryAllBy
.Seperti yang Anda katakan,
getBy*
dangetAllBy*
melempar kesalahan jika tidak ada yang ditemukan.Namun, metode yang setara
queryBy*
danqueryAllBy*
sebaliknya mengembalikannull
atau[]
:https://testing-library.com/docs/dom-testing-library/api-queries#queryby
Jadi untuk dua spesifik yang Anda sebutkan, Anda malah akan menggunakan
queryByText
danqueryByTestId
, tetapi ini berfungsi untuk semua kueri, bukan hanya keduanya.sumber
queryByTestId
) padahal sebenarnya ada dua rangkaian metode, yangqueryByTestId
merupakan salah satu contoh spesifik.Anda harus menggunakan queryByTestId sebagai ganti getByTestId.
Berikut adalah contoh kode di mana saya ingin menguji apakah komponen dengan id "car" tidak ada.
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(); }); });
sumber
getBy * melontarkan kesalahan saat tidak menemukan elemen, jadi Anda dapat memeriksanya
expect(() => getByText('your text')).toThrow('Unable to find an element');
sumber
Anda dapat menggunakan react-native-testing-library "getAllByType" dan kemudian memeriksa untuk melihat apakah komponen tersebut null. Memiliki keuntungan karena tidak harus mengatur TestID, juga harus bekerja dengan komponen pihak ketiga
it('should contain Customer component', () => { const component = render(<Details/>); const customerComponent = component.getAllByType(Customer); expect(customerComponent).not.toBeNull(); });
sumber