通过jest(ts-jest)使用命名空间测试打字稿代码

Svi*_*cer 6 javascript unit-testing namespaces typescript jest

当我尝试测试打字稿代码时:

namespace MainNamespace {
    export class MainClass {
        public sum(a: number, b: number) : number {
            return a + b;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的测试:

describe("main test", () => {
    it("sum test", () => {
        var mainClass = new MainNamespace.MainClass();
        expect(mainClass.sum(3, 2)).toEqual(5);
    })
})
Run Code Online (Sandbox Code Playgroud)

我得到错误:

ReferenceError:未定义MainNamespace

如何使用带有Jest(ts jest)的名称空间测试代码?

sli*_*wp2 2

这是一个工作示例:

\n\n

index.ts:

\n\n
// tslint:disable-next-line: no-namespace\nexport namespace MainNamespace {\n  export class MainClass {\n    public sum(a: number, b: number): number {\n      return a + b;\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

index.spec.ts:

\n\n
import { MainNamespace } from \'./\';\n\ndescribe(\'MainNamespace\', () => {\n  it(\'sum test\', () => {\n    const mainClass = new MainNamespace.MainClass();\n    expect(mainClass.sum(3, 2)).toEqual(5);\n  });\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

100%覆盖率的单元测试结果:

\n\n
 PASS  src/stackoverflow/50085505/index.spec.ts\n  MainNamespace\n    \xe2\x9c\x93 sum test (7ms)\n\n----------|----------|----------|----------|----------|-------------------|\nFile      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\nAll files |      100 |      100 |      100 |      100 |                   |\n index.ts |      100 |      100 |      100 |      100 |                   |\n----------|----------|----------|----------|----------|-------------------|\nTest Suites: 1 passed, 1 total\nTests:       1 passed, 1 total\nSnapshots:   0 total\nTime:        5.713s, estimated 10s\n
Run Code Online (Sandbox Code Playgroud)\n\n

依赖版本:

\n\n
"typescript": "^3.6.4",\n"jest": "^24.9.0",\n"ts-jest": "^24.1.0",\n
Run Code Online (Sandbox Code Playgroud)\n\n

源代码:https ://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/50085505

\n