tmp.php

// TODO: 後で修正する

コンストラクタで非同期処理を実施しているクラスのテストをJestで書く

constructor()で非同期処理を実施しているクラスのテストを書きたかったときの備忘録

↓みたいにconstructor()で非同期処理を実施していて、Promiseをreturnしていない

export default class A {
  private readonly list: any;

  constructor() {
    new Repository().fetch().then((res) => (this.list = res));
  }

  public b() {
    return this.list;
  }
}

テストしたい部分をasync()で囲ってあげればOK

test("sample", () => {
  async () => {
    expect(new A().b()).toBe([]);
  };
});
$ npm run test
> xxxx@1.0.0 test
> jest

 PASS  __tests__/test.test.js
  ✓ sample (1 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.056 s
Ran all test suites.

自信ないんだけど合ってる...? 間違ってたり、他に方法があったらご指摘ください!