javascript 用jest测试带有名称空间的 typescript 代码(ts-jest)

w41d8nur  于 2023-01-04  发布在  Java
关注(0)|答案(2)|浏览(184)

当我尝试测试 typescript 代码时:

namespace MainNamespace {
    export class MainClass {
        public sum(a: number, b: number) : number {
            return a + b;
        }
    }
}

我的测试:

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

我得到错误:
参考错误:未定义主名称空间
我如何用Jest测试带有名称空间的代码(ts jest)?

06odsfpq

06odsfpq1#

下面是一个工作示例:
index.ts

// tslint:disable-next-line: no-namespace
export namespace MainNamespace {
  export class MainClass {
    public sum(a: number, b: number): number {
      return a + b;
    }
  }
}

index.spec.ts

import { MainNamespace } from './';

describe('MainNamespace', () => {
  it('sum test', () => {
    const mainClass = new MainNamespace.MainClass();
    expect(mainClass.sum(3, 2)).toEqual(5);
  });
});

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

PASS  src/stackoverflow/50085505/index.spec.ts
  MainNamespace
    ✓ sum test (7ms)

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |      100 |      100 |      100 |      100 |                   |
 index.ts |      100 |      100 |      100 |      100 |                   |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        5.713s, estimated 10s

依赖项版本:

"typescript": "^3.6.4",
"jest": "^24.9.0",
"ts-jest": "^24.1.0",

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

vaqhlq81

vaqhlq812#

根据他们的文档,jest不适用于Typescript名称空间

相关问题