lua在单元测试中访问本地函数

时间:2015-11-16 17:17:50

标签: unit-testing lua

有没有办法用luaunit测试本地函数。 以下是示例代码:

-- file f.lua
local function f (n)
    return n*2
end

-- file unit-test.lua
require('luaunit')
require('f')

TestF = {} --class
    function TestF:testF()
        assertEquals( f(5), 10)
    end
-- class TestF

LuaUnit:run()

当我跑步时

lua unit-test.lua

我得到了:

Failed tests:
-------------
1) TestF.testF
unit-test.lua:13: attempt to call global 'f' (a nil value)
stack traceback:
        [C]: in function 'xpcall'

Ran 1 tests in 0.000 seconds
FAILED (failures=1)

如果不可能,最佳解决方案是什么?我应该将本地功能更改为全局吗?

2 个答案:

答案 0 :(得分:0)

好像,包装本地函数解决了这个问题:

-- file f.lua
local function f (n)
    return n*2
end

function wrapped_f (n)
  return f (n)
end

-- file unit-test.lua
require('luaunit')
require('f')

TestF = {} --class
    function TestF:testF()
        assertEquals( wrapped_f(5), 10)
    end
-- class TestF

LuaUnit:run()

运行单元测试后:

.
Ran 1 tests in 0.000 seconds
OK

答案 1 :(得分:0)

我建议您修改f.lua以保留模块形式。 以免污染全球环境。

如需介绍,请点击以下链接:
http://lua-users.org/wiki/ModulesTutorial

local mymodule = {}

function mymodule.foo()
    print("Hello World!")
end

return mymodule