unit-testing - Busted has_error 导致测试出错

标签 unit-testing lua lua-busted

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

-- 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>

它出现了我期望的错误,但问题是测试应该通过,因为我断言它正在返回正确的错误。

最佳答案

您需要将错误调用包装在一个函数中:

it("should not setMode with invalid mode", function()
  assert.has_error(function() display.setMode(100) end, "INVALID DISPLAY MODE: 100")
end)

关于unit-testing - Busted has_error 导致测试出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32042844/

相关文章:

unit-testing - Nock拦截请求但返回空对象

c++ - 在 Google UnitTest 中检测 glog 输出

c - 当对象/表被垃圾回收时如何通知主机应用程序

regex - 数字和正则表达式

unit-testing - 如何验证在单独的 go 例程中调用了一个方法

具有 DomSanitizer 依赖性的 Angular 6 单元测试组件

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

lua - 访问 Lua 表字段是否比访问 cdata 字段更快?

lua - 有没有办法并行运行 Busted 测试套件?