SQLiteトラックでのテスト

ExercismでSQLiteの演習をテストする方法を学びます。


SQLiteの演習のテストを実行するには、次の手順に従ってください。

  1. お好みのターミナルを開きます。
  2. 該当する${slug}_test.sqlファイルが入っているディレクトリに移動します。${slug}は演習の名前で、スペースの代わりにハイフンを使い、すべて小文字で書きます。
  3. 次のコマンドを実行します。
sqlite3 -bail < ${slug}_test.sql

このコマンドは、空のデータベースでSQLiteを初期化し、${slug}_test.sqlで指定されたテストを実行して、その後終了します。 -bailは、無効なコードがあったときにコードの実行が確実に停止するようにします。

テストの結果はコンソールに表として表示されます。表には各テストの説明、ステータス(例:「pass」)、そしてステータスが「fail」の場合のメッセージが表示されます。

デバッグ

デバッグにはSELECT文を使えます。 テストが失敗すると、出力はuser_output.mdに転送され、Webエディターに表示されます。

実行の詳細

テストファイル(${slug}_test.sql)は、かなり複雑なスクリプトです。 ここでは、その動作の概要を説明します。

  1. create_fixture.sqlを読み込んでテーブルを準備します。 これはテーブルを作成し、有効なデータにはdata.csvの値を、失敗するはずのエントリーにはerror_data.csvの値を入れます。 テスト中にチェックされるのはこれらのテーブルだけです。他のテーブルへの変更は無視されます。
  2. ${slug}.sqlファイルを読み込んで、解答のコードを実行します。
  3. テストケースと結果を保持するテーブルを作成します。
  4. 解答によって更新されたテーブルのデータをもとに、テスト結果を埋めます。
  5. テスト結果(passまたはfail、および任意の詳細)を表示します。 これらのCSVファイルには、さまざまなシナリオをテストするために必要なデータが含まれています。