从第三方库挂钩返回函数的间谍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从第三方库挂钩返回函数的间谍相关的知识,希望对你有一定的参考价值。
我无法弄清楚要监视反应导航 v5中navigate
钩子返回的useNavigation
函数。
我有一个简单的Link
组件:
const Link = props => {
const { to, children, ...restProps } = props;
const navigation = useNavigation();
const handlePress = useCallback(() => navigation.navigate(to), [navigation, to]);
return (
<TouchableOpacity testID="link" onPress={handlePress}>
<Text
{...restProps}
>
{children}
</Text>
</TouchableOpacity>
);
};
和相关测试:
jest.mock('@react-navigation/native', () => ({
...jest.requireActual('@react-navigation/native'),
useNavigation: () => ({
navigate: jest.fn(() => 'mocked navigate'),
}),
}));
import { useNavigation } from '@react-navigation/native';
const spy = jest.spyOn(useNavigation, 'navigate');
describe('<Link />', () => {
it('navigates', () => {
const link = render(<Link to="TestScreen">Test link</Link>);
fireEvent.press(link.getByTestId('link'));
expect(spy).toBeCalledTimes(1);
})
});
当然,这是行不通的,因为const spy = jest.spyOn(useNavigation, 'navigate');
中的navigate
不是useNavigation
的功能。但是我尝试了无数其他可能性,但我只是想不出该怎么做。
基本上,我要尝试验证的是,当按下链接时,它会调用带有期望参数的期望函数,并且我希望该函数被模拟出来。
答案
嘿,您找到问题的解决方案了吗?
以上是关于从第三方库挂钩返回函数的间谍的主要内容,如果未能解决你的问题,请参考以下文章