Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
如何伪造Typescript命名空间的间接调用函数?_Typescript_Mocking_Mocha.js_Sinon - Fatal编程技术网

如何伪造Typescript命名空间的间接调用函数?

如何伪造Typescript命名空间的间接调用函数?,typescript,mocking,mocha.js,sinon,Typescript,Mocking,Mocha.js,Sinon,假设给定了以下命名空间: export namespace CodeUnderTest { export function A(): void { B(); } export function B(): void { console.log("B was called."); } } 我如何编写一个使用B()的伪实现调用a()的测试 以下是我如何尝试与Sinon合作: import * as sinon from 'sinon'

假设给定了以下命名空间:

export namespace CodeUnderTest {
    export function A(): void {
        B();
    }

    export function B(): void {
        console.log("B was called.");
    }
}
我如何编写一个使用
B()
的伪实现调用
a()
的测试

以下是我如何尝试与Sinon合作:

import * as sinon from 'sinon';
import { CodeUnderTest } from './code-under-test';

describe('CodeUnderTest', () => {
    it('calls fake', () => {
        sinon.replace(CodeUnderTest, 'B', () => {
            console.log("Fake was called.");
        });

        CodeUnderTest.A();
    });
})
当我使用
mocha-r ts node/register code und test.spec.ts运行它时,调用了测试打印
B。
我希望它打印
false。

我对任何解决方案都持开放态度,而不仅仅是使用Sinon实现的解决方案。

如果您要查看生成的
A
请直接引用
B
,而不是命名空间成员(
CodeUnderTest.B
)。因此,当您将其替换为fake时,
A
不受影响。如果您查看生成的
A
则直接引用
B
,而不是命名空间成员(
CodeUnderTest.B
)。因此,当您将其替换为false时,
A
不会受到影响