Javascript assertion libraries - chai vs check-types

Javascript assertion libraries - chai vs check-types

本文关键字:vs check-types chai assertion libraries Javascript      更新时间:2023-10-30

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

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

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

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

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

chai 是一个仅用于测试的断言库 - 因此它没有以任何方式优化以在普通应用程序中运行。它没有迷你版本,需要它为你带来很多库代码,用于测试风格的不同可能性(shouldexpectassert(。最重要的是:如果不满足断言的条件,chai 会立即抛出一个特殊的AssertionError,旨在由 KarmaMocha 等流行的测试工具处理。

另一方面,检查类型只是为了使类型和值检查应用程序中更容易和更具可读性。在大多数情况下,它让你决定当断言不满足(不抛出(时该怎么做。

结论:

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

虽然您可以在测试中使用检查类型,但您需要自己为每个测试抛出AssertionErrors(这很烦人(。

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