anchor.diff:  
   Promiseで意図したテストを書くためにはどうするか、またそれを補助するヘルパー関数について学びました。
   
  -今回書いた`shouldFulfilled`と`shouldRejected`をライブラリ化したものは https://github.com/azu/promise-test-helper[azu/promise-test-helper] にあります。
  +[NOTE]
  +====
  +今回書いた`shouldFulfilled`と`shouldRejected`をライブラリ化して利用できるようになっています。
  +
  +https://github.com/azu/promise-test-helper[azu/promise-test-helper] からダウンロードすることが出来ます。
  +====
   
   また、今回のヘルパー関数は<<mocha-promise,MochaのPromiseサポート>>を前提とした書き方なので、
   <<done-promise-test,`done`を使ったテスト>>は利用しにくいと思います。
  
positive.code: 
  ここでいう意図したテストとは以下のような定義で進めます。
  
  あるpromiseオブジェクトをテスト対象として::
  * onFulfilledされることを期待したテストを書いた時
  ** onRejectedされた場合は**Fail**
  ** assertionの結果が一致しなかった場合は**Fail**
  * onRejectedされることを期待したテストを書いた時
  ** onFulfilledされた場合は**Fail**
  ** assertionの結果が一致しなかった場合は**Fail**
  
  つまり、ひとつのテストケースにおいて以下のことを書く必要があります。
  
  * Fulfilled or Rejected どちらを期待するか
  * assertionで渡された値のチェック
  
  以下のコードはRejectedを期待したテストとなっていますね。
  
  [source,js]
  ----
  
negative.code: この`catch`にはonRejectedで書くものと全く同じ使い方ができるので、
  `catch`の中にassertionによるテストを書けるようになっています。
  
  `shouldRejected`で囲む以外は、通常のpromiseの処理と似た感じになるので以下のようになります。
  
  . `shouldRejected` にテスト対象のpromiseオブジェクトを渡す
  . 返ってきたオブジェクトの`catch`メソッドでonRejectedの処理を書く
  . onRejectedにassertionによるテストを書く
  
  `shouldRejected`使った場合、Fulfilledが呼ばれるとエラーをthrowしてテストが失敗するようになっています。
  
  [source,js]
  ----
  promise.then(failTest, function(error){
      assert(error.message === 'human error');
  });
  // == ほぼ同様の意味
  shouldRejected(promise).catch(function (error) {
      assert(error.message === 'human error');
  });
  ----
  
  `shouldRejected`のようなヘルパー関数を使うことで、テストコードが少し直感的になりましたね。
  
  .Promise onRejected test
  image::img/promise-test.png[Promise onRejected test]
  