Можно ли заставить фермент работать с крючками RN +? - PullRequest
1 голос
/ 19 июня 2019

У меня есть проект, который раньше был обычным React-проектом (до того, как хуки обманули). Мой стек для тестирования включал шут + энзим.

Теперь хочу перейти на крючки, но я не могу заставить его работать. По какой-то причине мой экземпляр не будет обновляться при установленном обратном вызове.

Пример:

Учитывая тогда следующий компонент:

export type CounterReturnType = [number, () => void, () => void]

export function useCounter(): CounterReturnType {
    const [count, setCount] = useState(0);
    const increment = () => {
        console.log('PRESSED')
        setCount(count => count + 1)
    }
    const decrement = () => { setCount(count => count - 1) }
    return [count, increment, decrement]
}

export default function HooksTest() {
    const [count, increment, decrement] = useCounter();
    return (
        <View style={style.container}>
            <View style={style.counter}>
                <Text style={style.counterText} testID='counter'>{count}</Text>
            </View>
            <View style={style.actions}>
                <Touchable style={style.increment} onPress={increment} testID='increment'>
                    <Text>Increment</Text>
                </Touchable>
                <Touchable style={style.decrement} onPress={decrement} testID='decrease'>
                    <Text>Decrement</Text>
                </Touchable>
            </View>
        </View>
    )
}

Я сделал простой тест, подобный следующему:

it('increment to 1 on click', async () => {
        const component = shallow(<HooksTest />);
        const counter = component.findWhere(node => node.prop("testID") === "counter")
        const incrementButton = component.findWhere(node => node.prop("testID") === "increment")
        incrementButton.simulate('press')
        expect(counter.getElement().props.children).toEqual(1);
    })

Но счетчик вообще не хочет обновляться. Есть ли способ заставить это работать, или я должен вместо этого использовать другую библиотеку?

...