-1
필자는 정기적으로 값을 내보내도록 내 라이브러리에 대한 사양을 만들었습니다. 나는 sinonjs를 사용하고 있으며 콜백을 스파이로 만들었습니다. 나는 sinonjs에서 가짜 타이머를 사용하여 10 초의 여분의 두 간격을 시뮬레이트했다. 그러나 테스트가 틱 메서드를 처음 사용할 때 착오되면 오류가 발생합니다. 나는이 내 생산 코드 내 테스트예상 오류가 발생하는 이유는 무엇입니까?
it('should emit the values at an interval', function() {
var callback = this.sandbox.spy();
var interval = this.sandbox.useFakeTimers();
this.myLib.emitValues(callback);
interval.tick(1000);
interval.tick(1000);
callback.should.have.been.calledWith('test');
});
아래를
ExpectationError: Unexpected call: getTheValue()
Expectation met: getTheValue([...]) once
이 코드 아래의 오류가 발생
_getValue() {
var value = getTheValue(this.id);
this.myListener(value);
}
emitValues(callback) {
this.myListener = callback;
this._getValue();
setInterval(() => this._getValue(), 1000);
}
아무도 내가이 오류가 될 수있는 이유는 어떤 생각을 가지고 있습니까 ?
생산 코드를 표시하십시오. – luboskrnac
프로덕션 코드를 추가했습니다. –
나는 여전히 우리가 당신의 코드를 완전히 생각한다고 생각하지 않는다. 예 : 'getTheValue'는 어디에 정의되어 있습니까? 가짜는 어디에 있습니까? 'this'는 많이 사용됩니다. 우리가 당신의 외부 범위를 알아낼 수 있도록 코드를 둘러 쌈을 보여주십시오. 테스트 및 생산 코드 용. – luboskrnac