如何使用Jest在React中测试Typescript类成员

时间:2019-08-23 17:12:22

标签: javascript reactjs typescript jestjs

我有一个带有公共和私有成员函数的Typescript类(带有react)。

export class Myclass {
    private itemList: SomeItem[];

    constructor(params) {

    }

    public method1() {

    }

    private method2() {

    }
}

如何使用笑话在我的代码中测试method1和method2。我可以对导出的但不是类成员的函数执行此操作。但是我该如何为班级成员做。

2 个答案:

答案 0 :(得分:0)

您必须创建该类的实例,然后在测试中调用其公共方法。没有其他办法了。

答案 1 :(得分:0)

首先,您需要一个实例...

const instance = new MyClass()

然后,您可以通过直接调用method1来对其进行测试...

expect(instance.method1()).toBe(...)

对于method2,您有3个选择...

使用@ ts-ignore:

// @ts-ignore
expect(instance.method2()).toBe(...)

任意投放:

expect((instance as any).method2()).toBe(...)

// no type safety on method2

更改为protected并扩展:

class MyClass {
  protected method2() {}
}

class MyClassTester extends MyClass {
  public runTests() {
    expect(this.method2()).toBe(...)
  }

  // OR

  public method2Accessor(...args: any[]) {
    return this.method2(...args)
  }
}

const instance = new MyClassTester()

instance.runTests()

// OR

expect(instance.method2Accessor()).toBe(...)

// fully type-safe