aar*_*len 4 lua unit-testing lua-busted
我正在尝试使用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 monitor", function()\n setup(function()\n local _p = {\n monitor = {\'foo\'}\n }\n mockPeripherals(_p)\n end)\n\n it("should not setMode with invalid mode", function()\n assert.has_error(display.setMode(100), "INVALID DISPLAY MODE: 100")\n end)\n end)\nend)\nRun Code Online (Sandbox Code Playgroud)\n\n当我运行规范时,由于函数中的错误而出现错误。这是控制台输出:
\n\n$ busted \xe2\x97\x8f\xe2\x97\x8f\xe2\x97\x8f\xe2\x97\x8f\xe2\x9c\xb1 4 successes / 0 failures / 1 error / 0 pending :\n0.001444 seconds\n\nError \xe2\x86\x92 test/spec/rom/apis/display_spec.lua @ 32\n#API #Display with single monitor should not setMode with invalid mode ./src/rom/apis/display.lua:32: INVALID DISPLAY MODE: 100\n\nstack 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>\nRun Code Online (Sandbox Code Playgroud)\n\n它出现了我期望的错误,但问题是测试应该通过,因为我断言它返回了正确的错误。
\n您需要将出错的调用包装在函数中:
it("should not setMode with invalid mode", function()
assert.has_error(function() display.setMode(100) end, "INVALID DISPLAY MODE: 100")
end)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |