1

我正在使用 Mocha 和 Sinon进行 javascript单元测试。我想测试在某些情况下是否调用了某个方法。

但是,到目前为止,我无法测试该方法是否被调用。为了更清楚,我想要一个假的方法来代替实际的方法,因为我不想模拟我的整个应用程序状态来使这个简单的测试通过。

这是我的实际测试代码:

it('calls the handleResults method when its model syncs', function () {
  var spy = sinon.stub( this.appview, 'handleResults' ); 
  this.appview.model.fetch();
  server.requests[0].respond( 200,
                   { "Content-Type": "application/json" },
                   JSON.stringify( [ { id: "casa", text: "Something" } ] )
  );
  spy.should.have.been.called;
});

真正的this.appview.handleResults方法正在被调用,而我想调用一个假版本,除了检查它是否被调用之外什么都不做。

我究竟做错了什么?

4

1 回答 1

0

文档非常清楚,通过 using stub,原始函数将被替换为 mock 并且不会被调用:

作为间谍,存根可以是匿名的,也可以是包装现有函数。使用存根包装现有函数时,不会调用原始函数。

var stub = sinon.stub(object, "method");

用存根函数替换 object.method。object.method.restore();调用( )可以恢复原来的功能 or stub.restore();。如果属性还不是函数,则会引发异常,以帮助避免在存根方法时出现拼写错误。

于 2013-08-14T18:43:31.077 回答