ExercismでLuaの演習をテストする方法を学びます
テストを実行するには、次のコマンドを使います。
$ busted
bustedのインストールについては、Luaをローカルにインストールするを参照してください。
このガイドでは、VSCodeにBustedテストフレームワークとLocal Lua Debuggerを設定する方法を紹介します。これにより、テストスペックとテスト対象のファイルの両方にブレークポイントを設定できるようになり、テスト駆動開発のワークフローをすんなり進められます。これは唯一の方法というわけではありません。ほかにも動く方法はたくさんありますが、この方法なら少なくともすぐに動かせるようになります(注: これはWindows 10とUbuntu 20.04でテスト済みで、動作します)。
難しい用語の話はこのくらいにして、始めましょう。
これらの部分は、あくまでプロセスを説明するためのものなので、読み飛ばしてもかまいません。
VSCodeで、ほかのLuaデバッガー拡張機能をすべて削除するか無効にして、Local Lua Debuggerをインストールします。次に、カスタム起動構成を次のように作成します:
{
"name": "Busted",
"type": "lua-local",
"request": "launch",
"program": {
"command": "busted"
},
"cwd": "${workspaceFolder}/${relativeFileDirname}",
"args": ["${file}"],
"integratedTerminal": true
}
注: integratedTerminalプロパティを使うと、Property integratedTerminal is not allowedという警告が出ますが、これは無視してかまいません。
cwdプロパティは、現在の作業ディレクトリを指定します。これはパスの解決に重要です。既定では、Exercismは各演習を、トラック名のフォルダーの下にあるそれぞれのフォルダーにインストールします。Luaの場合は次のようになります:└── Exercism/ ├── lua/ │ ├── armstrong-numbers │ ├── bank-account │ ├── binarysearch │ └── etc... └── python/ └── etc...そこで、
/luaフォルダーから次のようにVSCodeを開くとします:
C:\users\<username>\Exercism\lua> code .または
/home/<username>/exercism/lua> code .VSCodeは、ワークスペース内の各演習をそれぞれのフォルダーに表示します。つまり、起動構成で現在の作業ディレクトリ
cwdを、演習ごとのフォルダーに変更する必要があります。これは、VSCodeの変数である${workspaceFolder}と${relativeFileDirname}を組み合わせて行います。
argsプロパティには、Bustedに渡す引数を指定します。ここでは、現在開いているファイルを参照する変数${file}を使っています。
次に、取り組んでいる演習のテストファイル(名前は<exercise_name>_spec.lua)の先頭に、次の3行を追加します:
if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then
require("lldebugger").start()
end
これで、デバッガーを使ってテストを実行したいときは、テストファイルを開き、左側のRun and Debug(Ctrl+Shift+D)サイドバーから、作成した起動構成を実行します。テストファイルにフォーカスがあると、起動構成がそのテストを実行し、ブレークポイントで停止して、下部の統合ターミナルのDEBUG CONSOLEタブに出力を表示します。
コーディングを楽しみましょう!