【问题标题】:Testing method called on Sinon.js spy在 Sinon.js spy 上调用的测试方法
【发布时间】:2015-04-10 16:42:35
【问题描述】:

我正在使用 SinonJS 来测试我的控制器是否调用了我视图中的方法。我想测试addSeat 方法是否以testSeat 的值调用。我的最大努力是下面的代码中的内容,但我遇到了错误。我希望能够在不将我的视图模块带入我的测试的情况下对此进行测试。这可能吗?

describe('Adding a seat', function() {
  view1Spy = {
        addSeat: sinon.spy(),
        render: sinon.spy()
  };
  beforeEach(function() {
    newSeat = seatingChartController.addSeat(3, 4);
    seatingChartController.registerView(view1Spy);
  });
  it('Calls addSeat on each view with the added seat', function() {
    expect(view1Spy.addSeat).to.be.calledWith(newSeat);
  });
}

编辑:

这是错误:

1) Seating Chart Controller Adding a seat Calls addSeat on each view with the added seat
     Failure/Error: 'undefined' is not a function (evaluating 'expect(view1Spy.addSeat).to.be.calledWith(newSeat)'

【问题讨论】:

  • 错误是什么?如果我们不知道,那就不好了:)
  • @Andy 我刚刚添加了它。谢谢。
  • 您使用的expect 模块是什么—— chai?

标签: javascript sinon


【解决方案1】:

在这种情况下,您可能需要以下内容:

view1Spy = {addSeat: sinon.spy()};
// ...
expect(view1Spy.addSeat.calledWith(newSeat)).to.be.true;

【讨论】:

  • 是的,要么实例化一个真实的视图和sinon.stub()它的addSeat方法。
  • @robertklep 是的——这实现了 OP 在测试中不必涉及视图类的要求。
  • 不错!这是有道理的,但现在我得到了一个不同的错误 - 我在帖子中发布了更新的代码和错误。
  • @ThomYorkkke 请查看更新的答案,看看它是否解决了第二个问题。
  • @JMM 那太完美了。谢谢你。我可以不使用 .to.be.callWith 吗?
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2012-06-07
  • 2013-03-21
  • 2018-02-26
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多