web-dev-qa-db-ja.com

Jestでクラスコンストラクターをテストする方法

次のようなクラスがあるとします。

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

コンストラクタが正しく初期化されたことをJestでテストするにはどうすればよいですか?いう... this.a = aおよびthis.b = bおよびその逆ではないですか?

toBeCalledWithを実行できることはわかっていますが、コンストラクタのロジックを確認できません。私もmockImplementationを作成することを考えていましたが、この場合、ロジックを書き直すので無意味であるように見えます。

7
Le garcon

オブジェクトのインスタンスを作成し、直接チェックするだけです。 thisに設定するため、これらは基本的にパブリック値です。

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

クラスを初期化した後、インスタンスのプロパティを確認するだけです。基本的には、任意の関数の副作用をテストできるのと同じです。

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