Luaunit - 如何测试返回多个值的函数

我有以下 Lua 代码:

 test_me=function()
      if mood == "happy" then
          return true, atable
      else
          return false, "go away"
      end
 end

Luaunit 测试文件名为 test_mood.lua:

test_mymood=function()
   luaunit.assertEquals(mymod.test_me,true)
end

当我运行这个单元测试时,它会失败,如下所示:

1..1
# 开始于 2018 年 5 月 16 日 20:14:05
not ok 1        test_mymood
    test_mood.lua:72: 期望值:true,实际值:function: 0x97c699b3e20
# 运行了 1 个测试,在 0.004 秒内,0 个成功,1 个失败

它通过了,但我认为它是把表格传回来了。 如果你能指导我正确的方向,那就太好了。现在我在阅读他们的文档,但还没有找到我想要的内容。

点赞
用户401828
用户401828

难道不应该这样写:

luaunit.assertEquals(mymod.test_me(),true)

带括号,这样就可以返回函数结果而不是函数本身了吗?

当测试信息中实际值为一个 函数 时,你就会发现它是错误的:

test_mood.lua:72: expected: true, actual: function: 0x97c699b3e20
------------------------------------------^

2018-05-16 20:26:34
用户851350
用户851350

你可以使用 table.pack() 获取所有返回结果,包括 nil

local r = table.pack(your_function())
for i = 1, r.n do
    print(i, r[i]) -- 返回结果中可能有一个为 nil
end
2018-05-17 02:06:19