ui5-best-practices-qunit について
UI5 の QUnit テストの作成、レビュー、モダナイズを支援するスキルです。非同期テストやセットアップと後処理、Sinon の使い方、コードスタイルの指針をまとめています。
主な機能
- 01QUnit テスト新規作成の指針
- 02テストのモダナイズとレビュー規則
- 03非同期テストのパターン
- 04Sinon サンドボックスとブリッジの指針
- 05モジュールのセットアップと後処理
- 06ESLint とコードスタイルのチェックリスト
活用シーン
- 01UI5 QUnit テストモジュールの作成
- 02QUnit 2 移行時のテスト改修
- 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.mdmodernizing-tests.mdwriting-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 以外の文字はエンコーディングの問題を引き起こします)
コメント
Markdown 対応