2016-04-01 43 views
1

我看到两个在NPM中流行的库 - 柴和检查类型。我想了解他们的预期目的。JavaScript断言库 - 柴与检查类型

我知道柴是用于单元测试TDD/BDD风格,并有一个丰富的断言库。

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

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

回答

1

正如你已经正确的假设,有两种不同的使用情况在这里:

被断言图书馆仅仅用于测试 - 因此它不以任何方式优化的正常应用程序中运行。它没有微缩版本,并且要求它为测试样式的不同可能性带来很多库代码(should,expectassert)。而最重要的是:如果断言一个条件是满足,柴会immidiately抛出旨在特殊AssertionError要通过流行的测试线束像摩卡处理。

,另一方面检查类型只是旨在使类型 - 和价值检查应用程序内更容易,更可读。在大多数情况下,让您决定在不符合断言(不抛出)时要做什么。

结论:

虽然当然你可以使用你的测试柴之外,我definitly不会推荐它,因为它会增加您自己构建的大小,有很多未使用的方法,你会需要一个try{} catch(){}阻止每个断言。

尽管您可以使用检查类型进行测试,但您需要自行为每个测试丢弃AssertionErrors(这很令人厌烦)。

所以:不,两个库都不是多余的。你可以认为柴作为一种库的超集,如检查类型chai本身使用它自己的类型检测库叫type-detect(其中我是其中一个维护者;))),它利用它们的用法在测试线束内。

+0

感谢您的解释。现在差别很明显。 – shuaybi

+0

你可以如此善良,并将其标记为答案?谢谢! :) – Charminbear