https://zenn.dev/kanasugi/articles/b49bd464311053
業務レベルでサーバーサイドでJestを書いたことはないけれど、新プロジェクトでは書くことになったみたいな方を想定して記述しています。
Jestについては中々ベストプラクティスが集まりにくいので、経験的にこう書くと「きれいに」・「早く」・「正確に」書けるよというTipsを集めてみました。もし、よろしければお読みください。
JestのPRをレビューしてるとたまに見受けるのですが、expectを使ってないケースがあります。
// NG
it('userを正常に、作成できること', async() => {
await createUser({ name: 'Mike' });
});
// OK
it('pdfが正常に削除できること', async() => {
const user = await createUser({ name: 'Mike' });
expect(user.name).toBe('Mike');
});
// OK
it('pdfが正常に削除できること', async() => {
await createUser({ name: 'Mike' });
const user = findOneUser({ name: 'Mike' });
expect(user.name).toBe('Mike');
});
詳細はかなりむずかしいのですが、脳死で、まずはtoStrictEqualを使いましょう。 厳密な比較になると覚えておけば問題ないです。
理由も交えて、より詳細に知りたい方はこちらが詳しいです。
type User = {
userId: number;
name: string;
};
// NG
expect(user).toEqual({ userId: 1, name: 'Mike' });
// OK
expect(user).toStrictEqual<User>({ userId: 1, name: 'Mike' });
createdAt, updatedAt, uuid形式のidの自動生成などはテストしにくいですが、expect.anyを使えば、簡単にかけます。その場合は、toStrictEqualで厳密な比較ができないので、toEqualにしましょう。