有没有办法用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)
如果不可能,最佳解决方案是什么?我应该将本地功能更改为全局吗?
答案 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