作者:Philip Walton
译者:Yeaseon
原文链接:点此查看
译文仅供个人学习,不用于任何形式商业目的,转载请注明原作者、文章来源、翻译作者及链接,版权归原文作者所有。
我们都知道在多个浏览器中测试我们的代码是多么的重要。至少在我们发布第一个项目的时候,我认为我们在网络开发社区做大部分工作还是相当不错的。
我们做的不够好的工作是测试代码时每一次做出的改变。
我个人对此感到很惭愧。我已经把“学习如何构建自动化、跨浏览器的JavaScript的单元测试”列在我的年度to-do清单中,但我每一次坐下来真正想要做的时候,我又退却了。虽然我肯定这一部分原因是因为我的懒惰,同时我认为这也是由于缺乏良好的可用信息在这个主题上。
有许多工具和框架(例如 Karma)宣称“要使自动化的JavaScript测试变得简单”,但以我的经验看来这些工具引入的复杂性比他们摆脱的复杂性更多。在我的工作经验中,如果你是一个专家这些工具“能工作”的很好,但对于一个初学者是很糟糕的。我想要真正了解的是这个流程是如何在引擎中工作的,以便在它出现问题的时候(总会出现问题的),我能解决它。
对我来说,充分了解这些是如何工作的最好方法就是尝试从头开始重新创建它。所以我决定去构建我自己的测试工具,然后把我的所学分享到社区中。
手工测试流程
在我解释自动化过程之前,我认为最重要的是确保我们都在同一页面上进行手工测试工作。
毕竟,自动化是关于使用机器来关闭负载的重复部分的现有工作流程。如果你在充分理解手工过程之前尝试去开始自动化,它也不会像你理解了自动化过程一样。
在手工过程中,你写了一个你的测试文件,它可能看起来像是:
var assert = require('assert');
var SomeClass = require('../lib/some-class');
describe('SomeClass', function() {
describe('someMethod', function() {
it('accept thing A and transforms it into thing B',function() {
var sc = new SomeClass();
assert.equal(sc.someMethod('A'), 'B');
});
});
});
这个例子用了Mocha和Node.js 资源模块,但是重要的不是你是用的测试库或者断言库,它可以使任意一个。
在Mocha中运行Node.js,在你终端通过命令行你就能运行这个测试:
mocha test/some-class-test.js
你需要一个带有