如何在Jest中测试类构造函数

时间:2018-04-17 19:40:45

标签: javascript unit-testing jest

假设我有一个类如下:

class SomeClass {
  constructor(a, b) {
    this.a = a;
    this.b = b;
  }
}

如何通过Jest测试构造函数是否以正确的方式初始化?说... this.a = athis.b = b,反之亦然?

我知道我可以执行toBeCalledWith,但这不会让我检查构造函数的逻辑。我也在考虑制作mockImplementation,但在这种情况下,我会重写逻辑似乎毫无意义,或者我可能没有意识到创建模拟的所有细微差别

2 个答案:

答案 0 :(得分:7)

只需创建对象的实例并直接检查即可。由于它将它们设置在this上,因此它们基本上是公共值:

it('works', () => {
  const obj = new SomeClass(1, 2);
  expect(obj.a).toBe(1);
  expect(obj.b).toBe(2);
});

答案 1 :(得分:1)

初始化类后,您只需检查实例属性即可。基本上和测试任何函数的副作用一样。

const a = Symbol();
const b = Symbol();    
const classInstance = new SomeClass(a, b);
expect(classInstance.a).toBe(a);
expect(classInstance.b).toBe(b);