Javascript断言库 - chai vs check-types

时间:2016-04-01 20:43:27

标签: javascript tdd chai

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

我知道chai用于TDD / BDD样式的单元测试,并且有一个丰富的断言库。

另一方面,

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

所以问题是如果chai已经支持丰富的断言库,那么check-types库是多余的?或者他们意味着不同的用途?我是否也可以在我的代码中使用chai(在我的测试之外)来检查变量是否属于正确的类型?

1 个答案:

答案 0 :(得分:1)

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

chai 是一个仅用于测试的断言库 - 因此它无法以任何方式在普通应用中运行。它没有微型版本,并且需要它为您提供了大量的库代码,用于测试样式的不同可能性(shouldexpectassert)。最重要的是:如果断言的条件是,chai将会立即抛出一个特殊的AssertionError,它将由流行的测试工具处理,例如 Karma < / em>或 Mocha

另一方面,

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

结论:

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

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

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