Closed5

メモ:GitLabのFrontend testing standards and style guildelines

TKTK

概要

  • GitLabでのテスト2種類
    • Jest
      • JS unit test
      • Integration testing
    • RSpec feature tests with Capybara
      • e2e integration testing
  • いつテスト書くか
    • 新しい機能追加時
    • バグ修正時にレグレッションテスト
TKTK

Jest

  • ブラウザでテストを実行する代わりにjestはjsdomを使うが、制限がある。
TKTK

What and how to est

  • ライブラリはテストしない
  • モックはテストしない
  • 複雑なロジックを持つ実装は、ユニットテストを書く
TKTK

Common practices

  • DOM要素をクエリするときは、その要素を一意的かつ意味的にターゲットにすることが最善
  • 特定のFunction/Methodを describe test blocksを書いてテストするときは、method nameを記載する
describe('methodName', () => {
  it('passes', () => {
    expect(true).toEqual(true);
  });
});
  • Promiseをテストするときは、テストがasynchronousであることと、rejectionsがハンドルされていること
  • テストで待ちが発生する場合、待ちの理由が不明瞭になるためsetTimeを使うことを避ける。代わりに、PromiseとAjaxを使う
  • テストの分離を確実に行う
  • Jestのベストプラクティス
    • プリミティブな値を比較するときはtoEqualではなくtoBeを使う。その方が速い。
    • より適切なマッチャーを選択する
    • toBeTruthytoBeFalsyは使わない。(expect(someBoolean).toBeFalsy() passes when someBoolean === null, and when someBoolean === false.)
    • toBeDefinedも避ける
このスクラップは2022/07/03にクローズされました