了解如何在 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改成每个练习各自的文件夹。为此,我们组合使用${workspaceFolder}和${relativeFileDirname}这两个 VSCode 变量。
args属性指定应该传给Busted的参数。这里我们用变量${file}来引用当前打开的文件。
然后,在你正在做的练习的测试文件顶部加上这三行,该文件名为<exercise_name>_spec.lua:
if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then
require("lldebugger").start()
end
现在,当你想用调试器运行测试时,打开测试文件,再从左侧的Run and Debug(Ctrl+Shift+D)侧边栏运行你刚创建的启动配置。如果测试文件处于焦点状态,启动配置就会运行这些测试,在断点处暂停,并把输出打印到底部集成终端里的DEBUG CONSOLE标签页中。
编程愉快!