【发布时间】:2015-01-29 14:29:11
【问题描述】:
NodeJS 的动态类型很有趣,除了给定一个函数外,我想在开发过程中得到一些反馈,无论我传递的内容是否真的会产生任何有意义的东西。
在 C# 中我会这样做:Debug.Assert(complexType.Title.length <= 10)(在发布模式下编译时不会包含此类语句)
我发现例如 Chai 可以做到这一点。然而,这是一个 BDD / TDD 框架,我计划将它放在生产代码中,而不是在测试中。
function doSomething(complexType) {
expect(complexType.title).to.be.a('string');
}
我读到这可以用 Uglify 编译出来,以更密切地反映 Debug.Assert 的行为。
这是个好主意吗?还是 NodeJS 有“真实”的断言?
【问题讨论】:
-
这也适用于单元测试。我想知道将这样的断言放在生产代码中是否是个好主意。
-
这是一个在生产中使用
assert的nodejs代码示例:github.com/joyent/node/blob/master/lib/_http_server.js#L150 -
我认为这不是一个好主意:它会减慢您的代码速度,并且在开发过程中对其进行适当测试后,您应该合理地确定类型是正确的。如果你需要验证是另一种任务,它有不同的库
-
是的,但是
Uglify应该能够解决这个问题...
标签: javascript node.js assertions