我在代码中有多种情况,我们在创建对象时将函数作为参数传递(例如在 onPress 中):
<Touchable
onPress={() => Linking.openURL(formatUrl(url))}
noContainer={true}>
{children}
</Touchable>
归根结底,这是渲染更大组件中的一个片段。因为它实际上不是组件的方法,所以我对在这里测试它并不特别感兴趣——如果需要,它将作为另一个组件的一部分进行测试。 但是,代码覆盖率报告返回并指示该函数未被覆盖。
有没有办法满足这种覆盖率——要么通过测试这个函数,要么忽略所有以这种方式传递的函数(匿名,作为参数)?
最佳答案
假设您使用的是 Jest,您可以将 Jest 模拟设置为调用它接收的参数,因此:
const componentProps = {
onPress: jest.fn(func => func());
}
因此,在这种情况下,模拟的 onPress
函数将接收您的匿名函数并调用它。覆盖将显示调用了匿名函数。
希望对您有所帮助:)
关于javascript - 在单元测试中覆盖匿名函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45036345/