sinon 스파이로 백본 모델의 이벤트가 발생했음을 테스트 할 때 콘솔 로그가 메서드 본문에 삽입 될 때 실행되는 것처럼 보이지만 오류 : expected doSomething to be called once but was called 0 times
이 잘못 표시됩니다. 나는 그 당신이 new Model()
호출하기 전에 라인에 const spy = sinon.spy(Model.prototype, 'doSomething');
같은 모델의 프로토 타입에 sinon 스파이를 넣어야 할 것, 해결하기 위해 알고Karma와 Sinon을 사용할 때 이벤트 버스에 바인딩 된 백본 모델의 메서드가 실행되었음을 테스트 할 수 있습니까?
it('Y U NO WORK', function() {
const events = {};
_.extend(events, Backbone.Events);
const Model = Backbone.Model.extend({
initialize: function() {
this.listenTo(events, 'doSomething', this.doSomething);
},
doSomething: function() {},
});
const model = new Model();
const spy = sinon.spy(model, 'doSomething');
events.trigger('doSomething');
sinon.assert.calledOnce(spy);
});
그러나이 문제시하지 않고 작동하는 것 같다 : 같은 테스트 기능은 보인다 아래와 같이 모델 인스턴스에 넣어 :
it('And this does work', function() {
const Model = Backbone.Model.extend();
const model = new Model();
const spy = sinon.spy(model, 'set');
model.set('foo', 'bar');
sinon.assert.calledOnce(spy);
});
호기심이 첫 번째 인스턴스에서 모델의 프로토 타입에 넣어해야하지만 두 번째의 모델 인스턴스에서 작동하는 이유는 무엇입니까?