Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

dart-test-fundamentals

`package:test` の基本概念とベストプラクティスを提供するスキルです。`test`・`group` による記述方法、`setUp`・`tearDown` などのライフサイクルメソッド、および `dart_test.yaml` を使った設定方法をカバーします。

description の原文を見る

|- Core concepts and best practices for `package:test`. Covers `test`, `group`, lifecycle methods (`setUp`, `tearDown`), and configuration (`dart_test.yaml`).

SKILL.md 本文

Dart テスト基礎

このスキルを使用する場面

以下の場合にこのスキルを使用します:

  • 新しいテストファイルを作成する
  • groupでテストスイートを構造化する
  • dart_test.yamlを通じてテスト実行を設定する
  • テストのライフサイクルメソッドを理解する

発見

テスト構造の改善候補を見つけるには:

try-finallyクリーンアップ

addTearDownの代わりにtry-finallyを使用してクリーンアップしているテストを検索:

  • Regex: \bfinally\s*\{ (テスト内のリソースクリーンアップに使用されているかを確認)

コア概念

1. テスト構造 (testgroup)

  • test: テストの基本単位です。

    test('description', () {
      // assertions
    });
    
  • group: テストを論理的なブロックに整理するために使用します。

    • グループはネストできます。
    • 説明は連結されます (例: "Group Description Test Description")。
    • setUptearDown呼び出しのスコープを設定するのに役立ちます。
    • 命名: クラス名に対応するグループにはPascalCaseを使用します (例: group('MyClient', ...))。
    • 単一グループを避ける: ファイル内のすべてのテストを単一のgroup呼び出しでラップしないでください (唯一のグループの場合)。
      • 注意: 明示的に要求されない限り、あなたが作成していない既存コードのクリーンアップ時にグループを削除しないでください。これはDIFFに大きな変動をもたらし、ほとんどのエンジニアが望まないものです。
  • テストの命名 test('test name here',:

    • 冗長な「test」プレフィックスを避けます。代わりにgroupを使用します。
    • 説明に期待される動作または結果を含めます (例: 'throws StateError'または'adds API key to URL')。
    • 説明は、グループ名と連結したときに読みやすいようにしてください。
  • 名前付きパラメータの配置:

    • testgroup呼び出しの場合、名前付きパラメータ (例: testOn, timeout, skip) を説明文の直後、コールバッククロージャの前に配置します。これにより、テストロジックを最後に保つことで読みやすさが向上します。
      test('description', testOn: 'vm', () {
        // assertions
      });
      

2. ライフサイクルメソッド (setUp, tearDown)

  • setUp: 現在のgroup内のすべてのtest前に実行されます (ネストされたグループを含む)。
  • tearDown: 現在のgroup内のすべてのtest後に実行されます。
  • setUpAll: グループ内の最初のテストの前に一度だけ実行されます。
  • tearDownAll: グループ内のすべてのテストの後に一度だけ実行されます。

ベストプラクティス:

  • テスト分離を保証するため、状態のリセットにsetUpを使用します。
  • リセットなしでテスト間でミュータブルな状態を共有しないようにします。

3. リソースのクリーンアップ

  • test本体内で作成されたリソースをクリーンアップするには、try-finallyブロックの代わりにaddTearDownの使用を検討してください。

避ける:

test('can create and delete a file', () {
  final file = File('temp.txt');
  try {
    file.writeAsStringSync('hello');
    expect(file.readAsStringSync(), 'hello');
  } finally {
    if (file.existsSync()) file.deleteSync();
  }
});

推奨:

test('can create and delete a file', () {
  final file = File('temp.txt');
  // リソース作成の直後にティアダウンを登録
  addTearDown(() {
    if (file.existsSync()) file.deleteSync();
  });

  file.writeAsStringSync('hello');
  expect(file.readAsStringSync(), 'hello');
});

4. 設定 (dart_test.yaml)

dart_test.yamlファイルはテストランナーを設定します。一般的な設定は以下の通りです:

プラットフォーム

テストが実行される場所を定義します (vm, chrome, node)。

platforms:
  - vm
  - chrome

タグ

テストを分類して、特定のサブセットを実行します。

tags:
  integration:
    timeout: 2x

コード内での使用:

@Tags(['integration'])
import 'package:test/test.dart';

タグの実行: dart test --tags integration

タイムアウト

テストのデフォルトタイムアウトを設定します。

timeouts:
  2x # デフォルトタイムアウトの2倍

5. ファイル命名

  • テストファイルは_test.dartで終わる必要があり、テストランナーに認識されます。
  • test/ディレクトリにテストを配置します。

一般的なコマンド

  • dart test: すべてのテストを実行します。
  • dart test test/path/to/file_test.dart: 特定のファイルを実行します。
  • dart test --name "substring": 説明に一致するテストを実行します。

関連スキル

dart-test-fundamentalsはテストの構造化と設定のためのコアスキルです。これらのテスト内でアサーションを書くには、以下を参照してください:

  • dart-matcher-best-practices: プロジェクトが従来のpackage:matcher(expect呼び出し)を使用している場合に使用します。
  • dart-checks-migration: プロジェクトが最新のpackage:checks(check呼び出し)に移行している場合に使用します。

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
kevmoo
リポジトリ
kevmoo/dash_skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/kevmoo/dash_skills / ライセンス: Apache-2.0

関連スキル

汎用その他⭐ リポ 1,982

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

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: kevmoo · kevmoo/dash_skills · ライセンス: Apache-2.0