【问题标题】:Covering Anonymous Function Arguments in Unit Tests覆盖单元测试中的匿名函数参数
【发布时间】:2017-07-11 13:46:01
【问题描述】:

我在代码中有多种情况,我们在创建对象时将函数作为参数传递(就像在 onPress 中一样):

<Touchable
  onPress={() => Linking.openURL(formatUrl(url))} 
  noContainer={true}>      
    {children}
</Touchable>

归根结底,这是一个更大组件中的 sn-p 被渲染。因为它实际上不是组件的方法,所以我对在这里测试它并不特别感兴趣——如果需要,它将作为另一个组件的一部分进行测试。 但是,代码覆盖率报告会显示该功能未被发现。

有没有办法满足这种覆盖 - 通过测试这个函数,或者忽略以这种方式传递的所有函数(匿名,作为参数)?

【问题讨论】:

    标签: javascript react-native mocha.js chai jestjs


    【解决方案1】:

    假设您使用的是 Jest,您可以设置您的 Jest 模拟以调用它接收的参数,因此:

    const componentProps = {
      onPress: jest.fn(func => func());
    }
    

    因此,在这种情况下,模拟的 onPress 函数将接收您的匿名函数并调用它。 Coverage 将显示匿名函数已被调用。

    希望对你有帮助:)

    【讨论】:

    • 我有一个我正在使用的库函数,它需要在匿名函数中使用匿名函数。喜欢:api.get(inclusions =&gt; [inclusions.product.get(type =&gt; type.offers)])。知道如何才能覆盖第二个功能吗?
    • 解决了我自己的问题,橡皮鸭风格。模拟将是{ get: { fn =&gt; fn([{ product: { get: fn2 =&gt; fn2() }}])}}。看起来很可爱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多