mcpField
U
ui5-best-practices-qunit

ui5-best-practices-qunit

github.com/ui5テスト・品質44156 回インストール1 週間前に更新
リポジトリ

ui5-best-practices-qunit について

UI5 の QUnit テストの作成、レビュー、モダナイズを支援するスキルです。非同期テストやセットアップと後処理、Sinon の使い方、コードスタイルの指針をまとめています。

主な機能

  1. 01QUnit テスト新規作成の指針
  2. 02テストのモダナイズとレビュー規則
  3. 03非同期テストのパターン
  4. 04Sinon サンドボックスとブリッジの指針
  5. 05モジュールのセットアップと後処理
  6. 06ESLint とコードスタイルのチェックリスト

活用シーン

  1. 01UI5 QUnit テストモジュールの作成
  2. 02QUnit 2 移行時のテスト改修
  3. 03非同期テスト動作のレビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ui5/plugins-coding-agents --skill ui5-best-practices-qunit

インストール後、Claude Code で/ui5-best-practices-qunitを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
async-patterns.md
modernizing-tests.md
writing-new-tests.md

詳細

UI5 向け QUnit テストのベストプラクティス

各リファレンスを読み込むタイミング

条件読み込むリファレンス
新しい QUnit テストファイルまたはモジュールを一から作成する場合references/writing-new-tests.md
既存のテストコードをモダナイズ、リファクタリング、またはレビューする場合references/modernizing-tests.md
QUnit 1(グローバル関数:test、asyncTest、ok、stop、start)から QUnit 2 に移行する場合references/modernizing-tests.md
nextUIUpdate、Core.applyChanges、assert.async、フェイクタイマー、またはイベントベースの非同期処理に関わるテストreferences/async-patterns.md

出力する前にリファレンスを読み込んでください。記憶に頼って作業しないでください。


基本ルール(常に適用)

ルール詳細
var を使わないconst または let を使ってください。宣言は1行につき1つとし、カンマで連結しないでください。
.bind(this) を使わない独自の this が不要なコールバックにはアロー関数を使ってください。
すべての async テストで assert.expect(N) を使う非同期コールバックが実行されないときに、何も検出されずテストが成功するのを防ぎます。同期テストでは不要です。
sinon.createSandbox() を使うsinon.sandbox.create() は Sinon 5 以降で実行時の非推奨警告を出すため、sinon.createSandbox() を推奨します。代わりに QUnit-sinon ブリッジ(this.stub()、this.spy()、this.mock()。this.clock は sinon.config.useFakeTimers が真の場合のみ)も使用できます。同じモジュール内で両方の方法を混在させないでください。
説明的なテスト名を付ける動作を説明する文にしてください。「it should」で始めないでください。各モジュール内で一意にしてください。
すべてのモジュールで beforeEach / afterEach を使うすべてのコントロールを beforeEach で作成し、afterEach で破棄してください。テスト間で変更可能な状態を共有しないでください。
ヘルパーで作成したコントロールには try/finally を使うコントロールを作成するヘルパーは、アサーションで例外が発生しても確実にクリーンアップされるよう、finally でコントロールを破棄してください。
ASCII 以外の文字を使わないコメント、文字列、JSDoc に ASCII 以外の文字を含めないでください。em ダッシュではなく、通常の ASCII ハイフンを使ってください。UTF-8 は必須ですが、コメント内の ASCII 以外の文字は、過去に文字エンコーディングの問題を引き起こしています。
ESLint のエラーを 0 件にする既存パターンに関する警告(max-nested-callbacks、no-use-before-define、valid-jsdoc)は許容されます。

クイックリファレンスチェックリスト

QUnit テストファイルを作成またはレビューする際に使用してください。

  • var を使わない - const または let を使い、宣言は1行につき1つにする(カンマで連結しない)
  • .bind(this) を使わない - 独自の this が不要なコールバックにはアロー関数を使う
  • 単純なケースでは assert.async() を使わない - async function と await new Promise(...) を使う
  • すべての async テストに assert.expect(N) を指定する
  • 新しいコードで sinon.sandbox.create() を使わない - sinon.createSandbox() またはブリッジ(this.stub()、this.spy()、this.mock())を使う。this.clock はフェイクタイマーが有効な場合のみ使用する
  • テスト名を "it should..." にしない - 説明的な文にする
  • すべての QUnit.module に、すべてのコントロールを作成・破棄する beforeEach / afterEach を用意する
  • フェイクタイマーを使う場合は、Core.applyChanges() より await nextUIUpdate(this.clock) を優先する。nextUIUpdate(clock) では対応できない場合に限り、Core.applyChanges() を残す
  • コントロールを作成するヘルパー関数では try/finally でコントロールを破棄する
  • コメントや文字列に ASCII 以外の文字を含めない(UTF-8 は必須ですが、ASCII 以外の文字はエンコーディングの問題を引き起こします)

コメント