【问题标题】:Why am I receiving an expectation error?为什么我会收到预期错误?
【发布时间】:2016-11-03 21:51:12
【问题描述】:

我为我的库创建了一个规范,以确保定期发出一个值。我正在使用 sinonjs 并创建了一个回调作为间谍。我在 sinonjs 中使用假计时器来模拟额外的两个 10 秒间隔。但是,当测试首次使用 tick 方法时,就会发出错误。我产生以下错误

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);
}

有人知道我为什么会收到这个错误吗?

【问题讨论】:

  • 向我们展示生产代码。
  • 我已经添加了生产代码。
  • 我仍然认为我们没有完全看到您的代码。例如。 getTheValue 定义在哪里?哪里是假的?有很多使用this。向我们展示封闭代码,以便我们找出您的外部范围。也可用于测试和生产代码。

标签: javascript unit-testing mocha.js sinon sinon-chai


【解决方案1】:

如果您希望回调被多次调用,请使用calledWithcalledWithExactly 并为预期的每次调用提供各种参数。

sinon-chai 只是在 Sinon 之上的 API 包装器。所以你可以阅读更多关于这些期望的信息in Sinon docs

【讨论】:

    猜你喜欢
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多