anchor.diff:  });
   ----
   
  -测试正常失败的示例中，为了一定调用`done` ，
  -在最后添加了 `.then(done, done);` 语句。
  +在上面测试正常失败的示例中，为了确保 `done` 一定会被调用，
  +我们在最后添加了 `.then(done, done);` 语句。
   
  -`assert` 通过时单纯调用 `done()` ，`assert` 失败时调用 `done(error)` 。
  +`assert` 测试通过（成功）时会调用 `done()` ，而 `assert` 失败时则调用 `done(error)` 。
   
  -这样，终于编写出了跟<<callback-style-test,回调风格的测试>>相同的Promise测试。
  +这样，我们就编写出了和 <<callback-style-test, 回调函数风格的测试>> 相同的Promise测试。
   
  -但是，我们需要为`assert` 失败时，额外添加 `.then(done, done);` 语句。
  -要小心编写Promise测试时，如果忘了加上上面的语句会造成测试不能正常终了的情况。
  +但是，为了处理 `assert` 失败的情况，我们需要额外添加 `.then(done, done);` 的代码。
  +这就要求我们在编写Promise测试时要格外小心，忘了加上上面语句的话，很可能就会写出一个永远不会返回直到超时的测试代码。
   
   
  -接下来，让我们接着学习一下最初提到的使用mocha理由中的支持"Promises测试"究竟是一种什么机制。
  +在下一节，让我们接着学习一下最初提到的使用Mocha理由中的支持"Promises测试"究竟是一种什么机制。
  
positive.code: });
  ----
  
  这可测试中 `assert` 失败了，你可能认为会抛出“测试失败”，
  实际情况却是测试不能正常终了而超时。
  
  .测试没有完了产生超时，停在该处。
  image::img/promise-test-timeout.png[promise test timeout]
  
  `assert` 失败的情况通常throw一个error，
  测试框架捕获该error，来判断测试失败。
  
  但是，Promise的情况下 `.then` 绑定的执行函数发生的error，
  会被Promise捕获，从而测试框架不会抛出error。
  
  我们来改善一下<<promise-assert-fail,`assert` 失败示例>>，
  让`assert` 失败时显示测试失败。
  
  [source,javascript]
  [[promise-assert-fail-fixed]]
  
negative.code: [[basic-tests]]
  == 基本测试
  
  关于<<es6-promises,ES6 Promises>>的语法我们已经学了一些，
  我想大家应该也能够在实际项目中编写Promise 的Demo代码了吧。
  
  这时，接下来你可能要苦恼该如何编写Promise 的测试代码了。
  
  那么让我们先来学习下如何使用http://visionmedia.github.io/mocha/[Mocha]来对Promise 进行基本的测试吧。
  
  先声明一下，这章中涉及的测试代码都是运行在Node.js环境下的。
  
  [NOTE]
  本书中出现的示例代码也都有相应的测试代码。
  测试代码可以参考 https://github.com/azu/promises-book[azu/promises-book] 。
  
  === Mocha
  
  Mocha是Node.js下的测试框架工具,在这里，我们并不打算对http://visionmedia.github.io/mocha/[Mocha]本身进行详细讲解。对
  http://visionmedia.github.io/mocha/[Mocha]感兴趣的读者可以自行学习。
  
  Mocha可以自由选择BDD、TDD、exports中的任意风格，测试中用到的Assert 方法也同样可以跟任何其他类库组合使用。
  也就是说，Mocha本身只提供执行测试时的框架，而其他部分则由使用者自己选择。
  
  这里我们选择使用Mocha，主要基于下面3点理由。
  
  * 它是非常著名的测试框架
  * 支持基于Node.js 和浏览器的测试
  * 支持"Promise测试"
  
  最后至于为什么说_支持"Promise测试"_，这个我们在后面再讲。
  
  要想在本章中使用Mocha，我们需要先通过npm来安装Mocha。
  
  [source,console]
  ----
  $ npm install -g mocha
  ----
  
  另外，Assert库我们使用的是Node.js自带的`assert`模块，所以不需要额外安装。
  
  首先，让我们试着编写一个对传统回调风格的函数进行测试的代码。
  
  === 回调函数风格的测试
  
  在<<promise-is-always-async,栏: Promise只能进行异步操作？>>中我们已经讲过，
  Promise中对 `then` 绑定的函数的调用总是异步进行的。
  
  如果想使用回调函数风格来对一个异步处理进行测试，使用Mocha的话代码如下所示。
  
  [source,javascript]
  .basic-test.js
  