做者:Philip Walton
译者:Yeaseon
原文连接:点此查看javascript
译文仅供我的学习,不用于任何形式商业目的,转载请注明原做者、文章来源、翻译做者及连接,版权归原文做者全部。
___css
咱们都知道在多个浏览器中测试咱们的代码是多么的重要。至少在咱们发布第一个项目的时候,我认为咱们在网络开发社区作大部分工做仍是至关不错的。html
咱们作的不够好的工做是测试代码时每一次作出的改变。java
我我的对此感到很惭愧。我已经把“学习如何构建自动化、跨浏览器的JavaScript的单元测试”列在个人年度to-do清单中,但我每一次坐下来真正想要作的时候,我又退却了。虽然我确定这一部分缘由是由于个人懒惰,同时我认为这也是因为缺少良好的可用信息在这个主题上。node
有许多工具和框架(例如 Karma)宣称“要使自动化的JavaScript测试变得简单”,但以个人经验看来这些工具引入的复杂性比他们摆脱的复杂性更多。在个人工做经验中,若是你是一个专家这些工具“能工做”的很好,但对于一个初学者是很糟糕的。我想要真正了解的是这个流程是如何在引擎中工做的,以便在它出现问题的时候(总会出现问题的),我能解决它。webpack
对我来讲,充分了解这些是如何工做的最好方法就是尝试从头开始从新建立它。因此我决定去构建我本身的测试工具,而后把个人所学分享到社区中。git
在我解释自动化过程以前,我认为最重要的是确保咱们都在同一页面上进行手工测试工做。github
毕竟,自动化是关于使用机器来关闭负载的重复部分的现有工做流程。若是你在充分理解手工过程以前尝试去开始自动化,它也不会像你理解了自动化过程同样。web
在手工过程当中,你写了一个你的测试文件,它可能看起来像是:chrome
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