MoonBit 语言导览 MoonBit

测试

MoonBit 内置测试支持,无需导入或配置额外包和工具。只需使用测试块并在其中编写测试代码。

注意:本教程暂不支持此功能。您可以在我们的 playground 或安装 MoonBit 工具链后在终端中尝试。

在第一个测试块中,我们使用内置函数 assert_eqassert_falseassert_true 测试一些属性。通过在终端运行 moon test 或点击集成开发环境 (IDE) 中的测试按钮,即可执行测试。

维护测试

手动维护预期值有时很繁琐。MoonBit 也支持内置的快照测试。快照测试会运行被测代码并将预期结果存储为快照。

在第二个测试块中,我们使用 inspect 函数测试 fib 的结果和数组的 map 方法。通过在终端运行 moon test --update 或点击 IDE 中的 Update test 按钮,结果将自动插入为第二个参数。

下次运行测试时,它将报告当前结果与存储结果之间的差异。您可以使用 --update 标志将存储结果更新为新结果。

test {
  assert_eq!(1, 1 + 2)
  assert_false!(1 == 2)
  assert_true!([1,2,3] == [1,2,3])
}

test {
  inspect!(fib(5))
  inspect!([1,2,3,4].map(fib))
}

// Add test name to make it more descriptive.
test "fibonacci" {
  inspect!(fib(5), content="5")
  inspect!(fib(6), content="8")
}

fn fib(n : Int) -> Int {
  if n < 2 {
    n
  } else {
    fib(n - 1) + fib(n - 2)
  }
}