端的に言うと以下のコードは想定通りに動かない。(Node のコンソールで) var Backbone = require('backbone') var Sinon = require('sinon') var m = new Backbone.Model({ 'foo': 'bar' }) var f = function(){ console.log("===> Callback called") } m.on('change', f) Sinon.spy(this, 'f') m.set('foo', 'hoge') f.called // => false m.on('change', f) した時点で f の参照自体が m に束縛されていて、その後いくら spy で this.f をすげ替えても、 m のコールバックで呼ばれる処理には影響しない。 その処理以降を次のように変えてや