sinonjs/sinon
在 GitHub 查看Spy's thisValue not pointing to instance when spying constructor
Open
#1,683 创建于 2018年2月9日
BugDifficulty: MediumHelp wantedRegressionhacktoberfestpinned
描述
This snippet works fine with Sinon 2.0.0 but fails with Sinon 4.2.2:
it('returns correct thisValue', function() {
window.SomeClass = function() {
this.counter = 0;
this.inc = function() {
this.counter++;
};
this.getCounter = function() {
return this.counter;
};
};
var spy = sinon.spy(window, 'SomeClass');
var some = new window.SomeClass();
some.inc();
expect(spy.thisValues[0].counter).toEqual(1);
expect(spy.thisValues[0].getCounter()).toEqual(1);
some.inc();
expect(spy.thisValues[0].counter).toEqual(2);
expect(spy.thisValues[0].getCounter()).toEqual(2);
});
It looks like the thisValues[0] object is a proxy and does not refer to the actual instance of some.
This is the error with Sinon 4.2.2:
Expected undefined to equal 1
TypeError: undefined is not a function (evaluating 'spy.thisValues[0].getCounter()')