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