306
15
章
SinonJS
test('
サブスクライバーを
1
回だけ呼び出します
', function() {
var message = getUniqueString();
var spy = sinon.spy();
PubSub.subscribe(message, spy);
PubSub.publishSync(message, '
こんにちは
');
ok(spy.calledOnce, '
サブスクライバーが
1
回呼び出されました
');
});
15.1.2
既存の関数へのスパイ
sinon.spy()
は既存の関数(
jQuery
の
$.ajax
など)に対するスパイにも利用できます。既存の
関数にスパイを設定しても、対象の関数は通常どおり動作します。しかし、その際にスパイは呼び
出しについてのデータにアクセスでき、テストにとって重要な情報を得ることができます。
test('jQuery.getJSON
の中での
jQuery.ajax
の使われ方を調べます
',
function() {
sinon.spy(jQuery, 'ajax');
jQuery.getJSON('/todos/completed');
ok(jQuery.ajax.calledOnce);
equals(jQuery.ajax.getCall(0).args[0].url, '/todos/completed');
equals(jQuery.ajax.getCall(0).args[0].dataType, ...