【问题标题】:Is it worth it to test reusable react components/hooks? [closed]测试可重用的反应组件/钩子是否值得? [关闭]
【发布时间】:2021-08-19 15:47:38
【问题描述】:

我知道对于测试特别是反应没有“完美的方法”,而且我遇到过很多场景。我所学到的,并且大部分时间看到的是“测试行为,而不是实现”,即不是测试例如 redux 中的值是什么,而是测试用户看到的内容。说得通。但是,如果是这种情况,测试Input 组件的行为方式感觉没有必要,因为在测试Form 时无论如何都会对其进行测试。但是Form 将针对特定情况进行测试,例如在LoginRegister 页面上,因此测试Form 也没有任何意义。

问题是是否值得花时间测试可重用组件/钩子,如果它们会在每种使用情况下都进行测试,还是需要权衡取舍?

【问题讨论】:

  • 您似乎错过了测试单个“单元”代码的要点。如果您没有测试过代码单元,那么您如何可靠地测试由这些单元组成的任何内容并自信地说它是正确的?通过表单测试输入不是单元测试,而是集成测试的边界,即单元如何工作,或集成。无论是否值得,嗯,这是主观的,所以我投票结束自以为是。

标签: reactjs unit-testing testing


【解决方案1】:

是的,单独测试每个组件是有价值的。在您的示例中,Input 的测试将在问题出在其代码而不是 Form 如何使用它时立即向我们展示。 Form 的测试应该测试它自己的行为,Input 的测试应该同样测试它的个人行为。您不应该在Form 级别编写涵盖Input 的所有用例的测试。相反,Form 测试应该着眼于 Form 的用例。

【讨论】:

    【解决方案2】:

    您可以在测试父组件时避免测试子组件功能。

    Enzyme 的浅渲染确保https://enzymejs.github.io/enzyme/docs/api/shallow.html

    【讨论】:

    • 正在渲染!== 正在测试。
    • @DrewReese 如果子组件没有渲染,开发者将无法测试子组件的行为,让测试集中在被测试的组件上
    • 当然,但是尝试使用 OP 所暗示的测试范例,即 react-testing-library 的工作方式,您会发现它不像酶那样测试实现细节。我的观点是,即使您在酶中使用mount 并渲染组件树,也不一定意味着子组件已“测试”。我明白你想说什么,但你的前提是有偏差的。
    猜你喜欢
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2020-04-24
    • 2020-01-26
    相关资源
    最近更新 更多