Busted的has_error函数会导致测试出错。
2018-5-13 20:14:29
收藏:0
阅读:76
评论:1
我尝试在 Lua 项目上使用 busted 进行单元测试。我有一个模块看起来像这样:
-- src/rom/apis/display.lua
local _displayModes = {
single = 1,
mirrored = 2,
extended = 3,
immersive = 4
}
local _validMode = function(mode)
retVal = false
for k,v in pairs(_displayModes) do
if mode == v then retVal = true break end
end
return retVal
end
local _setMode = function (mode)
if _validMode(mode) then
_config.mode = mode
else
error("INVALID DISPLAY MODE: "..mode)
end
end
display = {
mode = _displayModes,
setMode = _setMode
}
在我的规范中,我试图断言 setMode 是否返回错误:
local displayModule = require("rom/apis/display")
describe("#API #Display", function()
describe("with single monitor", function()
setup(function()
local _p = {
monitor = {'foo'}
}
mockPeripherals(_p)
end)
it("should not setMode with invalid mode", function()
assert.has_error(display.setMode(100), "INVALID DISPLAY MODE: 100")
end)
end)
end)
当我运行规范时,它会因为函数中的错误而错误。这是控制台输出:
$ busted ●●●●✱ 4 successes / 0 failures / 1 error / 0 pending :
0.001444 seconds
Error → test/spec/rom/apis/display_spec.lua @ 32
#API #Display with single monitor should not setMode with invalid mode ./src/rom/apis/display.lua:32: INVALID DISPLAY MODE: 100
stack traceback: ./src/rom/apis/display.lua:32: in function 'fn' test/spec/rom/apis/display_spec.lua:34: in function <test/spec/rom/apis/display_spec.lua:32>
它会出现我期望的错误,但问题是测试应该通过,因为我断言它正在返回正确的错误。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你需要在一个函数中包装制造错误的调用:
it("不应该使用无效模式设置模式", function() assert.has_error(function() display.setMode(100) end, "INVALID DISPLAY MODE: 100") end)