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: この`catch`にはonRejectedで書くものと全く同じ使い方ができるので、
  `catch`の中にassertionによるテストを書けるようになっています。
  
  `shouldRejected`で囲む以外は通常のpromiseの処理と似た感じになるので以下のようになります。
  
  . `shouldRejected` にテスト対象のpromiseオブジェクトを渡す
  . 返ってきたオブジェクトの`catch`メソッドでonRejectedの処理を書く
  . onRejectedにassertionによるテストを書く
  
  内部で`then`を使った場合と同様に、onFulfilledが呼ばれた場合はエラーをthrowしてテストが失敗する用になっています。
  
  [source,js]
  ----
  promise.then(failTest, function(error){
      // assertでerrorをテストする
  });
  // => 内部で殆ど同様の事をしている
  promise.then(function () {
      throw new Error('Expected promise to be rejected but it was fulfilled');
  }, function (reason) {
      fn.call(promise, reason);
  });
  ----
  
  `shouldRejected`のようなヘルパー関数を使うことで、
  promiseオブジェクトがFulfilledになった場合はテストが失敗するためテストが意図したものとなります。
  
  .Promise onRejected test
  image::img/promise-test.png[Promise onRejected test]
  
negative.code: 
  ここでいう意図したテストとは以下のような定義で進めます。
  
  あるpromiseオブジェクトをテスト対象として
  
  * Fulfilledされることを期待したテストを書いた時
  ** Rejectedとなった場合は**Fail**
  ** assertionの結果が一致しなかった場合は**Fail**
  * Rejectedされることを期待したテストを書いた時
  ** Fulfilledとなった場合は**Fail**
  ** assertionの結果が一致しなかった場合は**Fail**
  
  上記のケース(Fail)に該当しなければテストがパスするという事ですね。
  
  つまり、ひとつのテストケースにおいて以下のことを書く必要があります。
  
  * Fulfilled or Rejected どちらを期待するか
  * assertionで渡された値のチェック
  
  先ほどの`.then`を使ったコードはRejectedを期待したテストとなっていますね。
  
  [source,js]
  ----
  