4

エラー メッセージが後に続く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_errorbusted のアサーションに似ていると思いますが、それは実際に例外を発生させる関数のみであり、falseエラーメッセージが続く関数ではないようです。

4

1 に答える 1