在创建对象时,我在代码中有多种情况需要将函数作为参数传递(如onPress中的情况):
<Touchable
onPress={() => Linking.openURL(formatUrl(url))}
noContainer={true}>
{children}
</Touchable>
归根结底,这是一个更大组件中的一个片段,因为它实际上不是组件的一个方法,所以我对在这里测试它并不特别感兴趣--如果需要的话,它将作为另一个组件的一部分进行测试。x1c 0d1x然而,代码覆盖率报告返回了一个指示,表明该函数未被覆盖。
是否有一种方法可以满足这种覆盖--要么测试这个函数,要么忽略所有以这种方式传递的函数(匿名地,作为参数)?
2条答案
按热度按时间rur96b6h1#
假设您正在使用Jest,您可以设置Jest mock来调用它接收到的参数,因此:
因此,在本例中,模拟的
onPress
函数将接收匿名函数并调用它。覆盖率将显示匿名函数被调用。希望对你有帮助:)
elcex8rz2#
首先,我想建议不要从覆盖范围中免除代码行,特别是如果你是被支付来编写代码和单元测试它的话。
我发现有一件事是有效的,那就是编写一个void函数,它用你想要的参数调用你的函数。
如果您有:
而Jest没有覆盖它,试试看:
我经常用这个来表示情态动词:
但同样的原理也可以应用到一个复杂得多的函数上。而且它起作用了!