我在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
我需要对
externalFunc
进行存根测试(例如,它应返回7)。但是对internalFunc
的引用是封闭的,我可以更改internalFunc
,但是mymodule.internalFunc
将使用旧的externalFunc
。我尝试使用internalFunc
,但是它也不起作用。我可以适当地保留我的职能吗? 最佳答案
您可以通过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());