Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Sinon创建阻止实际函数执行的测试加倍_Javascript_Unit Testing_Mocha.js_Sinon - Fatal编程技术网

Javascript 如何使用Sinon创建阻止实际函数执行的测试加倍

Javascript 如何使用Sinon创建阻止实际函数执行的测试加倍,javascript,unit-testing,mocha.js,sinon,Javascript,Unit Testing,Mocha.js,Sinon,我正在用Mocha和Sinon进行javascript单元测试。我想测试在某些情况下是否调用了某个方法 但是,到目前为止,我无法管理仅测试该方法是否被调用。更清楚地说,我想要一个假的方法来代替实际的方法,因为我不想模拟我的整个应用程序状态来通过这个简单的测试 这是我的实际测试代码: it('calls the handleResults method when its model syncs', function () { var spy = sinon.stub( this.appview

我正在用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
方法,而我想调用一个假的版本,它只做检查是否调用了它


我做错了什么?

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

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

var stub=sinon.stub(对象,“方法”)

将object.method替换为 存根函数。可以通过调用
object.method.restore()
或stub.restore();
)。将引发异常 如果属性还不是函数,则在 存根方法


HandlerResults是直接在appView上的方法吗?您能发布调用
HandlerResults
的代码吗?您必须确保它所经过的路径与在原始方法的位置分配存根的路径相同。