Я использую сторонний компонент React, который очень сложно протестировать. Вот пример того, как выглядит мой компонент.
import { ThirdPartySelect } from 'thirdPartyComponents'
function Select() {
/* Lots of complicated logic */
...
const [name, changeName] = useState('First Name')
const options = [
'First Name',
'Second Name',
'First Name',
]
function handleChange(event) {
changeName(event)
}
return (
<ThirdPartySelect onChange={handleChange()} options={options} value={name}/>
)
}
Оказывается, что это действительно сложно проверить, потому что компонент Select на самом деле похож на 4 HTML элементов, и сложно определить, какой из них активировать. Оглядываясь вокруг, кажется, у этого парня было довольно хорошее решение, как решить проблему. Он издевался над компонентом и сделал так, чтобы был только компонент HTML, что значительно облегчило его изменение.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что показанный код может быть довольно легко смоделирован , но когда он говорит
/* Lots of complicated logic */
, там около 100 строк кода, потому что компонент использует React-Redux, и это делает вещи действительно беспорядочными.
Теоретически я мог бы добавить всю логику Redux c к макету, но я полагаю, что он может измениться в какой-то момент в самом компоненте, что потребует от меня его изменения в макете компонент, и это может стать очень грязным.
Итак, вот мой вопрос : есть ли способ высмеивать только простые компоненты React, которые я показал в примере, без необходимости добавить избыточную логику c, но все еще в состоянии включить избыточную логику c в проверяемый компонент? Или мне нужно физически закодировать что-либо, что я хочу добавить в смоделированный компонент?
Причина, по которой я хочу включить Redux logi c, заключается в том, что именно это я и хочу проверить.
Извините, если этот вопрос звучит несколько наивно, я новичок в Jest и с трудом понимаю, как все работает.