エラー メッセージが後に続く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)
現在のアプローチで気に入らない点が 2 つあります。
- 各テストは、きれいな 1 行ではなく 3 行です
- 3 番目のテストが失敗すると
false
、busted はそれが期待どおりの真の値ではないと言うだけで、「ゼロで割る」というエラー メッセージについては言及しません。
これらの問題を回避するためにテスト ファイルを改善する方法はありますか?
私がやりたいことはhas_error
busted のアサーションに似ていると思いますが、それは実際に例外を発生させる関数のみであり、false
エラーメッセージが続く関数ではないようです。