dart-migrate-to-checks-package
`package:matcher` の `expect` などの関数を、`package:checks` の同等機能に置き換えます。テストコードの移行作業を自動化し、新しいAPIへのスムーズな移行をサポートします。
description の原文を見る
Replace the usage of `expect` and similar functions from `package:matcher` to `package:checks` equivalents.
SKILL.md 本文
Dart テストを Package Checks に移行する
目次
依存関係の管理
Dart Tooling MCP Server の pub ツールまたは標準 CLI コマンドを使用して依存関係を管理します。
dart pub add dev:checksを使用してpackage:checksをdev_dependencyとして追加します。pubspec.yamlで明示的にリストされている場合はpackage:matcherを削除します(注:package:testによって推移的に含まれることが多いため、その場合は問題ありません)。- 移行対象のすべてのテストファイルで
package:checks/checks.dartをインポートします。
構文移行ガイドライン
テストアサーションを package:matcher 構文から package:checks が提供する自然な API に移行します。
- 基本的な等価性比較:
expect(actual, equals(expected))またはexpect(actual, expected)をcheck(actual).equals(expected)に置き換えます。 - 型チェック:
expect(actual, isA<Type>())をcheck(actual).isA<Type>()に置き換えます。 - プロパティ抽出:
expect(actual.property, expected)をcheck(actual).has((a) => a.property, 'property name').equals(expected)に置き換えます。 - 複数チェックのカスケード: Dart のカスケード演算子(
..)を使用して、単一の対象に対する複数の期待値をチェーンします。 - 非同期期待値:
Futureをチェックする場合は、check呼び出しをawaitします:await check(someFuture).completes((r) => r.equals(expected));。Streamをチェックする場合は、StreamQueueでラップして複数回のチェックを行うか、単一/ブロードキャストチェックの場合は.withQueueを使用します。
Dart MCP ツールの活用
Dart MCP Server ツールを活用して、移行プロセスを自動化し検証します。
pubを使用してdart pub getまたはdart pub addを実行します。analyze_filesを使用して、プロジェクトまたは特定パスで静的解析を実行します。run_testsを使用して、Dart または Flutter テストをエージェント中心の UX で実行します。dart testなどのシェルコマンドの代わりに、常にこれを使用してください。dart_fixを使用して、該当する場合は自動修正を適用します。
移行ワークフロー
テストスイートを移行する際の進捗状況を追跡するために、以下のチェックリストをコピーして使用します。
- タスク進捗
-
package:checksを dev dependency として追加します。 -
package:matcherを使用しているすべてのテストファイル(expect呼び出し)を特定します。 - ターゲットテストファイルで
package:checks/checks.dartをインポートします。 - すべての
expect(...)ステートメントをcheck(...)ステートメントに書き直します。 - 静的解析機を実行します(
analyze_files)。 - テストを実行します(
run_tests)。
-
フィードバックループ:静的解析
- 修正されたテストディレクトリで
analyze_filesツールを実行します。 - 静的解析の警告またはエラー(例:インポートの欠落、
isAの不正なジェネリック型、待機されていない Future)をレビューします。 - 警告を修正します。
- アナライザーが 0 個の問題を返すまで繰り返します。
フィードバックループ:テスト検証
run_testsツールを実行します。- テストが失敗した場合は、失敗出力をレビューします。
package:checksは詳細なコンテキストを提供します(例:Which: has length of <2>)。 check()の期待値または基になるコードを調整して失敗を解決します。- すべてのテストがパスするまで繰り返します。
例
基本的なアサーション
入力(matcher):
expect(someList.length, 1);
expect(someString, startsWith('a'));
expect(someObject, isA<Map>());
出力(checks):
check(someList).length.equals(1);
check(someString).startsWith('a');
check(someObject).isA<Map>();
合成期待値
入力(matcher):
expect('foo,bar,baz', allOf([
contains('foo'),
isNot(startsWith('bar')),
endsWith('baz')
]));
出力(checks):
check('foo,bar,baz')
..contains('foo')
..not((s) => s.startsWith('bar'))
..endsWith('baz');
非同期 Future
入力(matcher):
expect(Future.value(10), completion(equals(10)));
expect(Future.error('oh no'), throwsA(equals('oh no')));
出力(checks):
await check(Future.value(10)).completes((it) => it.equals(10));
await check(Future.error('oh no')).throws<String>().equals('oh no');
非同期 Stream
入力(matcher):
var stdout = StreamQueue(Stream.fromIterable(['Ready', 'Go']));
await expectLater(stdout, emitsThrough('Ready'));
出力(checks):
var stdout = StreamQueue(Stream.fromIterable(['Ready', 'Go']));
await check(stdout).emitsThrough((it) => it.equals('Ready'));
ライセンス: BSD-3-Clause(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- dart-lang
- リポジトリ
- dart-lang/skills
- ライセンス
- BSD-3-Clause
- 最終更新
- 不明
Source: https://github.com/dart-lang/skills / ライセンス: BSD-3-Clause
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。