【问题标题】:Javascript assertion libraries - chai vs check-typesJavascript 断言库 - chai vs check-types
【发布时间】:2016-04-01 20:43:27
【问题描述】:

我在 NPM 中看到了两个流行的库 - chai 和 check-types。我正在尝试了解他们的预期目的。

我知道 chai 用于单元测试 TDD/BDD 风格,并且拥有丰富的断言库。

另一方面,

check-types (https://github.com/philbooth/check-types.js) 只是一个断言库,用于检查参数的类型是否正确。看起来这不是用于单元测试的。我假设这将在我的 Javascript 函数中使用,以确保传递给函数的参数类型是预期的类型。

如果 chai 已经支持丰富的断言库,那么问题是检查类型库是多余的吗?还是它们有不同的用途?我是否也可以在我的代码中(在我的测试之外)使用 chai 来检查变量是否属于正确的类型?

【问题讨论】:

    标签: javascript tdd chai


    【解决方案1】:

    正如您已经正确假设的那样,这里有两个不同的用例:

    chai 是一个仅用于测试的断言库 - 因此它没有以任何方式优化以在普通应用程序中运行。它没有缩小版本,需要它为您提供大量库代码,用于不同的测试样式可能性(shouldexpectassert)。最重要的是:如果断言的条件得到满足,chai 将立即抛出一个特殊的AssertionError,旨在由 Karma等流行的测试工具处理> 或 摩卡

    另一方面,

    check-types 只是为了使 在应用中 的类型和值检查更容易、更易读。在大多数情况下,它让您决定在不满足断言(不抛出)时要做什么。

    结论:

    虽然您当然可以在测试之外使用 chai,但我绝对不推荐它,因为它只会使用大量未使用的方法增加构建的大小,并且您需要在每个断言周围使用 try{} catch(){} 块。

    虽然您可以在测试中使用 check-types,但您需要自己为每个测试抛出 AssertionErrors(这很烦人)。

    所以:不,这两个库都不是多余的。您可以将 chai 视为一种库的超集,例如 check-typeschai 本身使用它自己的类型检测库,称为 type-detect(我就是其中之一)的维护者 ;) )) 在测试工具中使用它们。

    【讨论】:

    • 感谢您的解释。区别现在很明显了。
    • 你能这么好心,把它标记为答案吗?谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多