我有一个 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 = safe_divide(-10.0, -5.0)
assert.truthy(ok)
assert.are.same(2.0, ok)
end)
end)
我不喜欢我目前的方法有两点:
- 每个测试是 3 行而不是单个干净的行
- 当第三次测试失败时,busted 只是说这
false
不是预期的真实值,并且从未提及“除以零”错误消息。
有没有办法改进我的测试文件以避免这些问题?
我认为我想做的有点类似于has_error
busted 中的断言,但这似乎只适用于实际引发异常的函数,而不适用于返回false
后跟错误消息的函数。