程序员首页投稿(暂停使用,暂停投稿)IT在线课程

javascript 中异步方法的单元测试和Promise

2015-10-26  本文已影响733人  沪上最强亚巴顿

作为一个后端开发人员, 由于公司项目的需要. 最近开始转向javascript.
由于我司一向秉承TDD(测试驱动开发) 和100% 覆盖率的开发原则. 所以在做js 开发的时候, 免不了要对js 代码进行单元测试.
普通的js 代码还好, 但是遇到异步代码( 如timers.setTimeout(callback)). 由于我司项目的特殊性, 并不能引入第三方的测试框架. 而只能使用原生的js 方法和特性来进行单元测试. 也就是我们的单元测试框架和assert 库都是自己重写的.

最后发现老马的一篇文章 Testing Asynchronous JavaScript. 介绍了相关的方法.

总体的思路: mock 掉异步调用callback 的方法, 改为直接对callback 进行立即调用.
例如: 要对ajax 请求进行单元测试, 那么在测试文件中复写 $.ajax.

 $.ajax = function(ajaxOpts) {
      var doneCallback = ajaxOpts.done;
      doneCallback(simulatedAjaxResponse);
 };

然后,这篇文章推荐使用Promise 来代替callback 来编写异步方法. 作为一个后端人员, 又对Promise 进行了一番研究.

Promise

1, Promise

2, Promise 与异步

3, Then

4, Immutable promise

5, Exception

6, Promise 规范

上一篇 下一篇

猜你喜欢

热点阅读