kidoOooOoooOOom

IT系で開発やってます

sinon.jsのstub()とsandbox()を用いたstub作成例

プロジェクトでAAAというライブラリを用いているけれど、そのAAAのインタフェースのstubでテストをしたい場合の話。AAA-mockとかプロジェクトを作って、下記のような感じですげかえる。

var AAA-mock = function(AAA, sandbox) {
  this.aaa = AAA
  this.initData();
  if (sandbox) {
    this.initStubs(sandbox);
  }
});

AAA-mock.prototype.initStubs = function(sandbox) {
  var that = this;

  if (!sandbox) {
    sandbox = sinon.sandbox.create();
  }

  sandbox.stub(hogehoge, '_get', ...
   // do something.

}

stubを使わない場合はrestore()しちゃえば元のAAAの動きにもなる。