Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
luassert库中的断言是否具有类似于内置'error'函数的'level'参数?_Lua_Lua Busted - Fatal编程技术网

luassert库中的断言是否具有类似于内置'error'函数的'level'参数?

luassert库中的断言是否具有类似于内置'error'函数的'level'参数?,lua,lua-busted,Lua,Lua Busted,我目前正在使用busted/luassert编写一个测试套件,因为我在一个单独的函数中放置了一些断言,所以得到了不准确的堆栈跟踪。例如,考虑下面的测试套件(AASPEC.LUA): 有没有办法让它指向7号线或8号线?一种可能的方法是,如果luassert的assert.is_true函数具有类似于内置函数的level参数 查看luassert的源代码,似乎是这样的,但我无法确定此功能是内部的还是以某种方式向用户公开的。而不是通过创建调用assert.xyz()的函数来创建自定义断言,创建一个返回

我目前正在使用busted/luassert编写一个测试套件,因为我在一个单独的函数中放置了一些断言,所以得到了不准确的堆栈跟踪。例如,考虑下面的测试套件(AASPEC.LUA):

有没有办法让它指向7号线或8号线?一种可能的方法是,如果luassert的assert.is_true函数具有类似于内置函数的level参数


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