我对 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 函数,它返回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) 我正在尝试使用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}\nRun Code Online (Sandbox Code Playgroud)\n\n在我的规范中,我试图断言 setMode 返回错误:
\n\nlocal displayModule = require("rom/apis/display")\ndescribe("#API #Display", function()\n describe("with single …Run Code Online (Sandbox Code Playgroud) 我想使用 Busted 为现有的 lua 文件编写单元测试。我想在测试期间交换一些方法,以便文件使用模拟/存根方法而不是真实方法运行(否则它将失败)。文件调用的一些方法是从其他 lua 库中提取的,我也想模拟这些方法。
如何才能实现这一目标?
任何帮助表示赞赏,谢谢。
文件“hhh.lua”的内容与文件“btest_spec.lua”相同(请参阅我的目录)
\n\n当我运行“busted”(只需使用 commond“busted”)时,它返回一个错误:
\n\n0 successes / 0 failures / 1 error / 0 pending : 0.00003 seconds\nError \xe2\x86\x92 No test files found matching Lua pattern: _spec\nRun 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\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n\n那么,为什么当我运行“busted”时,busted 找不到文件“btest_spec.lua”?
\n