Skip to content

Vuexのユニットテスト実装方針をふんわり決めたい #2932

@Hiroshiba

Description

@Hiroshiba

内容

#2899 で Vuex のユニットテストの追加PRをいただきました!
良い機会なのでテスト実装の方針について整理したいです。

現在、このリポジトリではドキュメント化を進めていけると良さそうに思ってます(例: #2908 でE2Eテストの書式ドキュメント化を検討中)。
Vuexについてもユニットテストがまだ少ないので、今後テストを増やしていく際の参考になるよう、暫定的な方針を決めておきたいです。
「とりあえず今はこんな感じで」という温度感でも良さそう。

検討したい項目

このあたりが観点になりそう?

  • Vuex.store.stateの作り方

    • 状態のmockを作るか、毎回実体を作るか
    • mockを作る場合は疎結合にできるけど、型エラーやテストごとの煩雑性が上がる
    • 実体を作ると実装が簡単だけど、重くなる
      • こういう感じで毎回初期値にリセットする↓
        const initialState = cloneWithUnwrapProxy(store.state);
        beforeEach(() => {
          store.replaceState(initialState);
        
          resetMockMode();
        });
    • 個人的には簡単さを取っておいて、テストが重いなどの問題が起き始めたらどうするか考えると良いかなと
  • テスト対象の選定基準

    • 「挙動が自明じゃないもの」を対象にするとか?
    • 例:setするだけの関数は自明すぎるのでテストしない
    • 変わった振る舞いをするものとか、計算が複雑なものとか
    • 個人的にはユースケースがあるなら複合テストにしてもOK派
  • e2eテストとの棲み分け

    • 正直わからないので未定で良さそう感

ゴール

こんな感じで行こうという方針が決まって、ドキュメント化するかしないかが決まったら完了。

その他

Metadata

Metadata

Assignees

No one assigned

    Labels

    機能向上要議論実行する前に議論が必要そうなもの

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions