Javascript 断言库 - chai 与检查类型
Javascript assertion libraries - chai vs check-types
我在 NPM 中看到两个流行的库 - chai 和 check-types。我试图了解他们的预期目的。
我知道chai是用来做单元测试TDD/BDD风格的,有丰富的断言库
另一方面,check-types (https://github.com/philbooth/check-types.js) 只是一个断言库,用于检查参数的类型是否正确。这看起来不像是要用于单元测试。我假设这将在我的 Javascript 函数中使用,以确保传递给函数的参数类型是预期的类型。
所以如果 chai 已经支持丰富的断言库,那么问题是检查类型库是多余的吗?或者它们意味着不同的用途?我是否也可以在我的代码中(在我的测试之外)使用 chai 来检查变量的类型是否正确?
正如您已经正确假设的那样,这里有两种不同的用例:
chai 是一个仅用于测试的断言库 - 因此在普通应用程序中它没有以任何方式优化到 运行。没有它的精简版本,要求它为您带来大量库代码,用于不同可能性的测试样式(should
、expect
和 assert
)。最重要的是:如果断言的条件 不 满足,chai 将立即抛出一个特殊的 AssertionError
,该 AssertionError
旨在由流行的测试工具处理,如 Karma 或 Mocha.
另一方面,check-types 只是为了让应用程序中的类型和值检查更容易和更易读 .在大多数情况下,它让您决定在不满足断言(不抛出)时要做什么。
结论:
虽然你当然可以在测试之外使用 chai,但我绝对不会推荐它,因为它只会增加你的构建的大小,有很多未使用的方法,你需要一个 try{} catch(){}
块围绕每个断言。
虽然您可以使用 check-types 进行测试,但您需要自己为每个测试抛出 AssertionErrors
(这很烦人)。
所以:不,两个库的 none 都是多余的。您可以将 chai 视为库的一种超集,例如 check-types(chai 本身使用它自己的类型检测库 type-detect(我是其中的维护者之一;)))利用它们在测试工具中使用。
我在 NPM 中看到两个流行的库 - chai 和 check-types。我试图了解他们的预期目的。
我知道chai是用来做单元测试TDD/BDD风格的,有丰富的断言库
另一方面,check-types (https://github.com/philbooth/check-types.js) 只是一个断言库,用于检查参数的类型是否正确。这看起来不像是要用于单元测试。我假设这将在我的 Javascript 函数中使用,以确保传递给函数的参数类型是预期的类型。
所以如果 chai 已经支持丰富的断言库,那么问题是检查类型库是多余的吗?或者它们意味着不同的用途?我是否也可以在我的代码中(在我的测试之外)使用 chai 来检查变量的类型是否正确?
正如您已经正确假设的那样,这里有两种不同的用例:
chai 是一个仅用于测试的断言库 - 因此在普通应用程序中它没有以任何方式优化到 运行。没有它的精简版本,要求它为您带来大量库代码,用于不同可能性的测试样式(should
、expect
和 assert
)。最重要的是:如果断言的条件 不 满足,chai 将立即抛出一个特殊的 AssertionError
,该 AssertionError
旨在由流行的测试工具处理,如 Karma 或 Mocha.
check-types 只是为了让应用程序中的类型和值检查更容易和更易读 .在大多数情况下,它让您决定在不满足断言(不抛出)时要做什么。
结论:
虽然你当然可以在测试之外使用 chai,但我绝对不会推荐它,因为它只会增加你的构建的大小,有很多未使用的方法,你需要一个 try{} catch(){}
块围绕每个断言。
虽然您可以使用 check-types 进行测试,但您需要自己为每个测试抛出 AssertionErrors
(这很烦人)。
所以:不,两个库的 none 都是多余的。您可以将 chai 视为库的一种超集,例如 check-types(chai 本身使用它自己的类型检测库 type-detect(我是其中的维护者之一;)))利用它们在测试工具中使用。