【发布时间】:2015-08-26 13:30:20
【问题描述】:
这可能是一个广泛而有争议的问题......但我们开始吧。
我以前从未在 JavaScript 中进行过单元测试,我想知道关于其部署的最佳实践是什么。
单元测试本身非常简单(创建自己的单元测试或使用现有的框架,如 QUnit 很简单)。
我的问题是关于部署最佳实践;单元测试代码是否应该部署到生产环境中?
例如:我有一个对象 'person',其函数为 'getname()';然后我有相应的单元测试来断言这个名字是我所期望的。
很简单,对吧?...但我从未见过“野外”的 JavaScript 单元测试示例。因此,当人们将他们的工作部署到生产环境中时:
- 他们是否剥离了单元测试以节省带宽?
- 是否有特殊的方法来处理单元测试,以免它们进入生产环境?
- 是否有可用的工具可以让我在本地进行单元测试,但将其剥离用于生产?
我以前从未对 JavaScript 进行过单元测试,所以我不确定我问的问题是否正确。
【问题讨论】:
-
不要测试 getter 和 setter...
-
好点。 getter/setter 过于细化。我只是用它作为一个例子。假设它是一个更复杂的功能,通过 3rd-party api 获取数据,一旦我编写了相应的单元测试,是否应该“按原样”简单地部署到生产中?
-
这可能是一个广泛的,的确。策略因框架/可用工具而异。您是在谈论 node.js 项目,还是像 Angular、Ember 或一些由您的 ASP 页面提供服务的 JavaScript 等客户端。您可能想要更具体一点,以便我们了解应该关注什么开。
-
实际上都是。它是一个完整的 JavaScript 堆栈。我并没有为创建测试而苦苦挣扎。我对将其部署到生产中特别感兴趣。我以前从未在互联网上见过它(但我也不检查我去的每个网站)。这是因为 JS 开发人员不进行单元测试(简短的谷歌搜索表明很多不)还是在开发和部署之间有一个我不知道的过程?
-
通常会使用一些工具将源 js 文件压缩/压缩为单个文件。 (您可以稍微将其与编译 C/java 源代码进行比较)。测试文件通常被排除在此压缩之外。 @pablochan 在他的回答中提到了这样的构建工具,