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

时间:2018-05-16 20:24:00

标签: unit-testing lua

我有以下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
# Started on Wed May 16 20:14:05 2018
not ok 1        test_mymood
    test_mood.lua:72: expected: true, actual: function: 0x97c699b3e20
# Ran 1 tests in 0.004 seconds, 0 successes, 1 failure

它正在过去,但我认为它正在恢复。 如果你能指出我正确的方向,那就太棒了。现在正在阅读他们的文档,但却没有找到我正在寻找的东西。

2 个答案:

答案 0 :(得分:0)

不应该是:

luaunit.assertEquals(mymod.test_me(),true)
带括号的

以便返回函数结果而不是函数本身?

如果测试中的消息显示实际值为函数,您可能会发现错误:

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

答案 1 :(得分:0)

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

local r = table.pack(your_function())
for i = 1, r.n do
    print(i, r[i]) -- one of return result maybe nil
end