gpt4 book ai didi

javascript - 如果包裹在自执行的匿名函数中,JavaScript 可以是 "unit testable"

转载 作者:可可西里 更新时间:2023-11-01 02:24:39 26 4
gpt4 key购买 nike

正如我多次看到的那样,一个自执行的匿名函数用于包含整个库。如何测试这些库,例如QUnit 无法访问匿名函数包装器内的任何内容?

最佳答案

我同意你不想执行 Backdoor Manipulation通过寻找偷偷摸摸的方法来离散地测试私有(private)方法。

但是,正如您所指出的,无数的 Web 应用程序被编写成一个巨大的自执行泥球,缺乏任何命名或公共(public) API。这是一个完全不同的问题,在许多其他技术堆栈中不太可能遇到。

TDD 为网络编写 JavaScript 的巨大值(value)之一是它迫使您编写至少可供两方使用的 JavaScript:您的网络应用程序 + 您的单元测试。

我和 Jasmine 玩过几次这个传统的救援游戏:

  1. 如果未命名,则将每个功能 block 包装在一个自执行的命名方法中

  2. Characterize那些具有功能的方法 Jasmine眼镜。我喜欢 Jasmine 有很多原因,但它确实在遗留救援中击败了 qunit,因为它能够嵌套示例组。例如,每当我描述的代码有一个匿名函数时,通常可以使用嵌套示例组来离散地描述该嵌套函数的行为,方法是用 spy 捕获它并在不同的上下文中调用它。

  3. 一旦你是新手,就开始重构为小的、命名良好、组织良好的方法/命名空间

  4. 编写隔离测试来表征这些单元

  5. 吃个三明治,想想那些功能测试是否仍然有值(value)(如果你没有任何全栈测试,它们可能是有值(value)的;如果你已经有很好的全栈测试,它可能太多余了,无法保证维护他们)。因为我通常用Cucumber来驱动开发/Capybara ,我认为使用 Jasmine 编写集成测试没有多大值(value)。

关于javascript - 如果包裹在自执行的匿名函数中,JavaScript 可以是 "unit testable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com