//foldercontroller.js file
// Self invoking function.
(function()
{
....
lib.FolderController = FolderController;
function FolderController(thePath)
{
.... // Some other initializations and other functions
this.getFileList = getFileList;
function getFileList()
{
return someArray;
}
}
})();
我想在下面的代码中存储上面的getFileList函数。我正在使用sinon库。我做了一些事情,但我没有希望
// FileCacheTest.js file Here I want to test some feature
var fileList = ["a","b","c"];
var filesStub = sinon.stub(lib.FolderController, "getFileList")
.callsFake(function fakeFn(){
return fileList;
});
我得到了这个结果:
TypeError:尝试将未定义属性getFileList包装为函数
用例如下。我想在调用folderController.getFileList();
var folderController = new lib.FolderController(theDirectory);
var files = folderController.getFileList();
我的问题是我如何存根这个getFileList函数?
答案 0 :(得分:0)
您的lib.FolderController
是一个功能。
在这个函数中你有一个属性getFileList
,它也是一个函数。
所以你可以做的是:
1)实例化您的对象,而不是将其分配给函数:
lib.FolderController = new FolderController('mypath');
2)试图以这种方式存根:
var filesStub = sinon.stub(lib.FolderController(), "getFileList")
.callsFake(function fakeFn(){
return fileList;
});
但请记住在return this;
函数的末尾添加FolderController
,否则它不会返回对象,也不能在非对象上存根方法。
我不知道你在做什么,所以检查一下你的需求更多。