可以使酶与RN +挂钩配合使用吗?

时间:2019-06-19 10:05:59

标签: reactjs unit-testing react-native enzyme react-hooks

我有一个项目,该项目以前是一个正常的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);
    })

但是计数器根本不想更新。有没有办法使这项工作有效,或者我应该改用另一个库?

0 个答案:

没有答案