打字稿中闭包的存根函数
Stubbing functions which are in closure in TypeScript
我正在用 TypeScript 编写代码。这是我的代码片段:
module mymodule {
export function internalFunc() {
return 1;
}
export function externalFunc() {
return internalFunc() + 1;
}
}
哪个会编译成这个JS:
var mymodule;
(function (mymodule) {
function internalFunc() {
return 1;
}
mymodule.internalFunc = internalFunc;
function externalFunc() {
return internalFunc() + 1;
}
mymodule.externalFunc = externalFunc;
})(mymodule || (mymodule = {}));
//# sourceMappingURL=file1.js.map
我需要用存根 internalFunc
测试 externalFunc
(例如,它应该 return 7)。但是对 internalFunc
的引用处于关闭状态,我可以更改 mymodule.internalFunc
,但是 externalFunc
将使用旧的 internalFunc
。我尝试使用 sinon.stub(mymodule, 'internalFunc', function() {return 7})
,但它也不起作用。我可以正确存根我的函数吗?
您可以通过 mymodule.internalFunc() + 1
而不是 internalFunc() + 1
引用它:
module mymodule {
export function internalFunc() {
return 1;
}
export function externalFunc() {
return mymodule.internalFunc() + 1;
}
}
mymodule.internalFunc = () => 7;
console.log(mymodule.externalFunc()); // 8
现在你应该可以按照你描述的方式使用它了(虽然我对sinon不熟悉):
sinon.stub(mymodule, 'internalFunc', () => 7);
assertEquals(8, mymodule.externalFunc());
我正在用 TypeScript 编写代码。这是我的代码片段:
module mymodule {
export function internalFunc() {
return 1;
}
export function externalFunc() {
return internalFunc() + 1;
}
}
哪个会编译成这个JS:
var mymodule;
(function (mymodule) {
function internalFunc() {
return 1;
}
mymodule.internalFunc = internalFunc;
function externalFunc() {
return internalFunc() + 1;
}
mymodule.externalFunc = externalFunc;
})(mymodule || (mymodule = {}));
//# sourceMappingURL=file1.js.map
我需要用存根 internalFunc
测试 externalFunc
(例如,它应该 return 7)。但是对 internalFunc
的引用处于关闭状态,我可以更改 mymodule.internalFunc
,但是 externalFunc
将使用旧的 internalFunc
。我尝试使用 sinon.stub(mymodule, 'internalFunc', function() {return 7})
,但它也不起作用。我可以正确存根我的函数吗?
您可以通过 mymodule.internalFunc() + 1
而不是 internalFunc() + 1
引用它:
module mymodule {
export function internalFunc() {
return 1;
}
export function externalFunc() {
return mymodule.internalFunc() + 1;
}
}
mymodule.internalFunc = () => 7;
console.log(mymodule.externalFunc()); // 8
现在你应该可以按照你描述的方式使用它了(虽然我对sinon不熟悉):
sinon.stub(mymodule, 'internalFunc', () => 7);
assertEquals(8, mymodule.externalFunc());