#reactjs #unit-testing #jestjs #onclick #enzyme
Вопрос:
Я новичок в модульном тестировании и написании тестовых примеров с использованием jest и enzyme в React. Может ли кто-нибудь, пожалуйста, помочь мне написать тестовый пример для этого примера?
const [open, setOpen] = useState(false);
const handleClose = () => {
setOpen(!open);
}
//this handleClose is an onClick event
Комментарии:
1. Имитируйте щелчок, подтвердите видимый пользователю результат изменения состояния.
2. Извините, я не могу дозвониться до вас. Если вы не возражаете, не могли бы вы подробнее рассказать об этом в ответе?
3. Мы не можем видеть достаточно вашего компонента, чтобы точно сказать вам, как его протестировать. Кроме того, это, как правило, не служба написания кода-я бы рекомендовал поискать соответствующие учебные пособия и просмотреть их, чтобы понять, как использовать Jest и Enzyme в целом.
Ответ №1:
Это должно быть сделано таким образом, чтобы проверить, где будет использоваться открытое состояние:
import { mount } from 'enzyme';
import React, { useState } from 'react'
const App = () => {
const [open, setOpen] = useState(false);
const handleClose = () => {
setOpen(!open);
};
return (
<>
<button id="btn-click" onClick={handleClose}>
Click here
</button>
<span id="is-open">{open ? "is open" : "is closed"}</span>
</>
);
};
it('when the button is clicked someone must be opened', () => {
const wrapper = mount(<App />)
wrapper.find('#btn-click').simulate('click')
expect(wrapper.find('is-open').children()).toContain('is open')
})