我在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
来测试internalFunc
(例如,它应该返回7)。但是对internalFunc
的引用已关闭,我可以更改mymodule.internalFunc
,但externalFunc
将使用旧的internalFunc
。我尝试使用sinon.stub(mymodule, 'internalFunc', function() {return 7})
,但它也没有用。我可以正确地删除我的功能吗?
答案 0 :(得分:0)
您可以通过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());