【问题标题】:unit test for function in lua using busted使用 busted 对 lua 中的功能进行单元测试
【发布时间】:2022-10-20 13:33:54
【问题描述】:

我有一个包含多功能的文件,我尝试使用 busted 框架为特定功能编写单元测试

代码.lua:

function myfunc1(a,b)
-- do someting
return c1
end

function myfunc2(a2,b2)
-- do someting
return c2
end

code_spec.lua:

describe("function test", function ()
    it("test result is the same in myfunc1", function ()
        local functions = require "code"
        local result = functions.myfunc1(500, 200)
        assert.are.same(300, result)
    end)
end)

但我收到这样的错误

code_spec.lua:4: attempt to index a boolean value (local 'functions')

我需要我的单元测试来评估myfunc1myfunc2 中特定输入的输出,而我的代码和测试位于单独的文件中。

我测试了不同的方法,但文档有点混乱或缺乏好的例子。

【问题讨论】:

    标签: unit-testing lua lua-busted


    【解决方案1】:

    您的 code.lua 污染了全局命名空间,而不是返回其导出。要解决您的问题,您可以调整您的测试以解决该问题,或者您可以解决该问题。要解决此问题,您可以从全局命名空间调用 myfunc1,如下所示:

            require "code"
            local result = myfunc1(500, 200)
    

    要解决此问题,您将改为从 code.lua 返回一个导出表,如下所示:

    local p = {}
    
    function p.myfunc1(a,b)
    -- do someting
    return c1
    end
    
    function p.myfunc2(a2,b2)
    -- do someting
    return c2
    end
    
    return p
    

    【讨论】:

    • 在测试部分,我应该如何添加多个输入,例如 myfunc1(500, 200) 而不是 myfunc1(5, 29) 等……然后逮捕他们每个人的结果。
    猜你喜欢
    • 2018-07-02
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2017-04-14
    相关资源
    最近更新 更多