Я создал спецификацию для своей библиотеки, чтобы гарантировать, что значение испускается с регулярным интервалом. Я использую sinonjs и создал обратный вызов в качестве шпиона. Я использую поддельный таймер в синонах, чтобы имитировать дополнительные два интервала в 10 секунд. Однако, когда тест приземляется при первом использовании метода тика, это когда выдается ошибка. Я произвожу ошибку нижеПочему я получаю ошибку ожидания?
ExpectationError: Unexpected call: getTheValue()
Expectation met: getTheValue([...]) once
Ниже приведен код для моего теста
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');
});
Это мой код продукции
_getValue() {
var value = getTheValue(this.id);
this.myListener(value);
}
emitValues(callback) {
this.myListener = callback;
this._getValue();
setInterval(() => this._getValue(), 1000);
}
Кто-нибудь есть какие-либо идеи, почему я мог бы получить эту ошибку ?
Показать код продукции. – luboskrnac
Я добавил код производства. –
Я все еще не думаю, что мы полностью видим ваш код. Например. Где определяется 'getTheValue'? Где фальшивка? Там используется 'this' много. Покажите нам прилагаемый код, чтобы мы могли определить внешний охват. Для теста и для производственного кода. – luboskrnac