我有一个项目,该项目以前是一个正常的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);
})
但是计数器根本不想更新。有没有办法使这项工作有效,或者我应该改用另一个库?