
目次
Sinon.jsとは
Sinon.jsとはJavaScriptでテストダブル(テストの代役)を実現するライブラリ。使用するにはnode.jsとSinon.jsが必要。
まずSinon.jsを下記のコマンドでインストールする。
$ npm i sinon
インストールが完了したらs.jsのような適当なJavaScriptを作成してrequire記述してで読み込む。
const sinon = require('sinon');
実行は $ node s.js
Sinon.jsのspyについて
Sinon.jsのspyは以下のように作成する。指定された引数だけobj.numを増やすサンプルのオブジェクトも追加した。サンプルではinc()を見るようにした。
const obj = {
num: 0,
inc(n = 1) {
this.num += n;
return this.num;
}
};
const sinon = require('sinon');
const spy = sinon.spy(obj, 'inc');
spy.calledで呼び出しの真偽を取得
const obj = {
num: 0,
inc(n = 1) {
this.num += n;
return this.num;
}
};
const sinon = require('sinon');
const spy = sinon.spy(obj, 'inc');
obj.inc();
console.log(spy.called);
// => true
一度も呼び出されなければfalseになる。
const obj = {
num: 0,
inc(n = 1) {
this.num += n;
return this.num;
}
};
const sinon = require('sinon');
const spy = sinon.spy(obj, 'inc');
console.log(spy.called);
// => false
spy.calledで呼び出し回数を取得
const obj = {
num: 0,
inc(n = 1) {
this.num += n;
return this.num;
}
};
const sinon = require('sinon');
const spy = sinon.spy(obj, 'inc');
obj.inc();
obj.inc();
console.log(spy.callCount);
// => 2
spy.argsで引数を取得
const obj = {
num: 0,
inc(n = 1) {
this.num += n;
return this.num;
}
};
const sinon = require('sinon');
const spy = sinon.spy(obj, 'inc');
obj.inc();
obj.inc(3);
console.log(JSON.stringify(spy.args));
// => [[],[3]]
spy.returnValuesで戻り値を取得
const obj = {
num: 0,
inc(n = 1) {
this.num += n;
return this.num;
}
};
const sinon = require('sinon');
const spy = sinon.spy(obj, 'inc');
obj.inc();
obj.inc(3);
console.log(JSON.stringify(spy.returnValues));
// => [1,4]
spy.thisValues[0]でオブジェクトの値を取得
const obj = {
num: 0,
inc(n = 1) {
this.num += n;
return this.num;
}
};
const sinon = require('sinon');
const spy = sinon.spy(obj, 'inc');
obj.inc();
obj.inc(3);
console.log(spy.thisValues[0]);
// => { num: 4, inc: {略} }



