MoonScript 轨道上的测试

了解如何在 Exercism 上测试你的 MoonScript 练习


在 MoonScript track 上测试,与在 Lua track 上测试完全一样。在练习目录中,输入:

$ busted

待处理的测试

这个 track 遵循 Exercism 的测试驱动开发方法。 你会拿到一套完整的测试,但只有第一个测试是“激活”的。

要启用这些测试,把测试的命令从 pending 改成 it。

如果你喜欢每次都运行所有测试,可以用命令行工具一次性把它们全部改掉。 下面是用 perl 实现的例子(几乎处处都装了它):

$ perl -i -pe 's/^\s+\Kpending\b/it/' two_fer_spec.moon

在在线编辑器中操作时,测试运行器会自动运行所有测试。

使用 LuaRocks

Lua 本身是一门非常小的语言。 LuaRocks是 Lua 模块的包管理器。

在提交的解答中,你可以随意使用任何模块,但并不是所有模块都能在在线测试运行器中使用。 测试运行器提供了以下这些:

已作为busted依赖提供

  • penlight(主页)

    Penlight 是一组纯 Lua 库,让你更轻松地处理遍历目录、读取配置文件之类的常见任务。它为表和序列提供函数式操作。

  • dkjson(主页)

    dkjson 是一个用于编码和解码 JSON 数据的模块。

已作为 MoonScript 依赖提供

  • LPeg(主页)

    LPeg 是一个全新的 Lua 模式匹配库,基于解析表达式文法(PEGs)。

  • LuaFileSystem(主页)

    LuaFileSystem 提供了一种可移植的方式来访问底层的目录结构和文件属性。

日期时间

  • date(GitHub)

    日期和时间字符串解析;时间加减;时间跨度计算;支持 ISO 8601 日期。

  • lua-tz(GitHub)

    Lua TZ 提供支持时区的日期和时间函数。核心函数的接口与标准函数 os.date 和 os.time 类似,但额外接受一个时区实参。

  • luatz(GitHub)

    一个用于处理时间和日期的 Lua 库。