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

Javascript 如何在Jest中测试类构造函数,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,假设我有一门课,如下所示: class SomeClass { constructor(a, b) { this.a = a; this.b = b; } } 如何通过Jest测试构造函数的初始化方式是否正确?说this.a=a和this.b=b,反之亦然 我知道我可以使用执行调用,但这不允许我检查构造函数的逻辑。我也在考虑制作mockImplementation,但在这种情况下,这似乎毫无意义,因为我将重写逻辑,或者我可能不知道创建mock的所有细微差别初始化类后,您

假设我有一门课,如下所示:

class SomeClass {
  constructor(a, b) {
    this.a = a;
    this.b = b;
  }
}
如何通过Jest测试构造函数的初始化方式是否正确?说
this.a=a
this.b=b
,反之亦然


我知道我可以使用执行
调用,但这不允许我检查构造函数的逻辑。我也在考虑制作
mockImplementation
,但在这种情况下,这似乎毫无意义,因为我将重写逻辑,或者我可能不知道创建mock的所有细微差别

初始化类后,您可以简单地检查实例属性。基本上与测试任何功能的副作用相同

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

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

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