luassert库中的断言是否具有类似于内置'error'函数的'level'参数?
我目前正在使用busted/luassert编写一个测试套件,因为我在一个单独的函数中放置了一些断言,所以得到了不准确的堆栈跟踪。例如,考虑下面的测试套件(AASPEC.LUA): 有没有办法让它指向7号线或8号线?一种可能的方法是,如果luassert的assert.is_true函数具有类似于内置函数的level参数luassert库中的断言是否具有类似于内置'error'函数的'level'参数?,lua,lua-busted,Lua,Lua Busted,我目前正在使用busted/luassert编写一个测试套件,因为我在一个单独的函数中放置了一些断言,所以得到了不准确的堆栈跟踪。例如,考虑下面的测试套件(AASPEC.LUA): 有没有办法让它指向7号线或8号线?一种可能的方法是,如果luassert的assert.is_true函数具有类似于内置函数的level参数 查看luassert的源代码,似乎是这样的,但我无法确定此功能是内部的还是以某种方式向用户公开的。而不是通过创建调用assert.xyz()的函数来创建自定义断言,创建一个返回
查看luassert的源代码,似乎是这样的,但我无法确定此功能是内部的还是以某种方式向用户公开的。而不是通过创建调用
assert.xyz()的函数来创建自定义断言,创建一个返回true
或false
的函数,并将其注册到assert:register
查看中的第二个示例。发现有一种方法可以解决我的实际问题,即找出哪个断言是触发的断言,而无需更改我编写测试的方式。通过使用-v
(-verbose
)选项调用busted
),当断言失败时,它将打印完整的堆栈跟踪,而不仅仅是提供一个行号
$busted-v spec/a_spec.lua
0成功/1失败/0错误/0挂起:0.003241秒
失败→ 规格/a_规格lua@6
我的测试结果是阳性的
规格/a_规格lua:2:预期对象相同。
通过:
(布尔)假
预期:
(布尔)真
堆栈回溯:
规范/a_规范lua:2:在升级值“我的自定义断言”中
规格/a_规格lua:7:功能正常
提到第7行让我知道失败的断言是什么。我实际使用的自定义断言函数正在调用assert.are.same
,如果出现错误,它将显示非常有用的不匹配表的打印输出。如果我定义自己的自定义断言函数,还有什么方法可以实现这一点吗?从require('luassert.util')获得的util.deepcompare做了大部分艰苦的工作。看见
local function my_custom_assertion(x) -- 1
assert.is_true(x > 0) -- 2 <-
end -- 3
-- 4
describe("My test suite", function() -- 5
it("they are positive", function() -- 6
my_custom_assertion(-10) -- 7 <-
my_custom_assertion(-20) -- 8 <-
end) -- 9
end) -- 10