标签: lua-busted

使用 Busted 对 Lua 代码进行单元测试时模拟本地导入

我对 Lua 很陌生,我正在尝试测试我在 Nginx 服务器上运行的脚本。我被推荐 Busted 但我似乎无法弄清楚如何模拟一些本地进口。

Lua 代码导入以下内容:

local http = require "resty.http"
Run Code Online (Sandbox Code Playgroud)

在 test _spec 文件中,我是这样开始的:

package.path = "files/?.lua;spec/?.lua;" .. package.path

_G.http = require('resty.fake_http')
local app = require('app')
Run Code Online (Sandbox Code Playgroud)

我在fake_http.lua里面创建了一个文件spec/resty/http

但是当我运行一个虚拟测试时,我收到以下错误:

suite spec/app_spec.lua
files/app.lua:3: module 'resty.http' not found:No LuaRocks module found for resty.http
Run Code Online (Sandbox Code Playgroud)

知道我在这里做错了什么吗?

lua unit-testing lua-busted

6
推荐指数
1
解决办法
947
查看次数

如何为返回 ok、err 的函数编写失败的单元测试?

我有一个 Lua 函数,它返回false后跟错误消息,并希望使用已损坏的测试框架来测试其行为。现在我正在这样做:

function safe_divide(a, b)
    if b > 0 then -- buggy! should be b ~= 0 
        return a / b
    else
        return false, "division by zero"
    end
end

describe("safe_divide", function()
    it("can divide by positive numbers", function()
        local ok, err = safe_divide(10.0, 5.0)
        assert.truthy(ok)
        assert.are.same(2.0, ok)
    end)

    it("errors when dividing by zero", function()
        local ok, err = safe_divide(10.0, 0.0)
        assert.not_truthy(ok)
        assert.are.same("division by zero", err)
    end)

    it("can divide by negative numbers", function()
        local ok, err = …
Run Code Online (Sandbox Code Playgroud)

lua lua-busted

5
推荐指数
1
解决办法
2067
查看次数

破坏 has_error 会导致测试出错

我正在尝试使用busted对lua项目进行单元测试。我有一个看起来像这样的模块:

\n\n
-- src/rom/apis/display.lua\n\nlocal _displayModes = {\n  single = 1,\n  mirrored = 2,\n  extended = 3,\n  immersive = 4\n}\n\nlocal _validMode = function(mode)\n  retVal = false\n  for k,v in pairs(_displayModes) do\n    if mode == v then retVal = true break end\n  end\n  return retVal\nend\n\nlocal _setMode = function (mode)\n  if _validMode(mode) then\n    _config.mode = mode\n  else\n    error("INVALID DISPLAY MODE: "..mode)\n  end\nend\n\ndisplay = {\n  mode = _displayModes,\n  setMode = _setMode\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的规范中,我试图断言 setMode 返回错误:

\n\n
local displayModule = require("rom/apis/display")\ndescribe("#API #Display", function()\n  describe("with single …
Run Code Online (Sandbox Code Playgroud)

lua unit-testing lua-busted

4
推荐指数
1
解决办法
439
查看次数

Busted 测试期间模拟现有 lua 文件中的方法

我想使用 Busted 为现有的 lua 文件编写单元测试。我想在测试期间交换一些方法,以便文件使用模拟/存根方法而不是真实方法运行(否则它将失败)。文件调用的一些方法是从其他 lua 库中提取的,我也想模拟这些方法。

如何才能实现这一目标?

任何帮助表示赞赏,谢谢。

lua unit-testing mocking resty lua-busted

4
推荐指数
1
解决办法
3073
查看次数

未找到与 Lua 模式匹配的测试文件:spec

我的目录

\n\n

文件“hhh.lua”的内容与文件“btest_spec.lua”相同(请参阅我的目录)

\n\n

当我运行“busted”(只需使用 commond“busted”)时,它返回一个错误:

\n\n
0 successes / 0 failures / 1 error / 0 pending : 0.00003 seconds\nError \xe2\x86\x92 No test files found matching Lua pattern: _spec\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我运行 \'busted btest_spec.lua\' 时,它成功并返回:

\n\n
\xe2\x97\x8f\xe2\x97\x8f\n2 successes / 0 failures / 0 errors / 0 pending : 0.003049 seconds\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我运行“busted *”时,它成功并返回:

\n\n
\xe2\x97\x8f\xe2\x97\x8f\xe2\x97\x8f\xe2\x97\x8f\n4 successes / 0 failures / 0 errors / 0 pending : 0.006815 seconds\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么,为什么当我运行“busted”时,busted 找不到文件“btest_spec.lua”?

\n

lua luarocks lua-busted

2
推荐指数
1
解决办法
1139
查看次数

标签 统计

lua ×5

lua-busted ×5

unit-testing ×3

luarocks ×1

mocking ×1

resty ×1