현재 버스트 된/luassert를 사용하는 테스트 스위트를 작성하고 있으며, 별도의 함수에 어설 션을 넣었으므로 스택 추적이 부정확합니다. 내가 그것을 실행하면 내 테스트 케이스가 실패하지만 스택 트레이스 포인트 2 그래서 난했다 두 주장 중 어느 것이 말할 수 없다 줄을luassert 라이브러리에있는 assertion은 내장 된`error` 함수와 비슷한`level` 매개 변수를 갖고 있습니까?
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
예를 들어, 다음 테스트 스위트 (a_spec.lua)을 고려 실패한 사람.
$busted spec/a_spec.lua
◼
0 successes/1 failure/0 errors/0 pending : 0.002242 seconds
Failure → spec/a_spec.lua @ 6
My test suite they are positive
spec/a_spec.lua:2: Expected objects to be the same.
Passed in:
(boolean) false
Expected:
(boolean) true
줄 7 또는 8을 대신 표시 할 수있는 방법이 있습니까? 가능한 한 가지 방법은 luassert의 assert.is_true 함수가 내장 된 error 함수와 비슷한 수준 매개 변수를 가진 경우입니다.
luassert의 소스 코드를 보면 does care about the stack level 인 것 같습니다. 그러나이 기능이 내부적인지 또는 사용자에게 어떻게 든 노출되어 있는지를 파악할 수 없었습니다.
실제로 사용하는 커스텀 어썰트 함수는'assert.are.same'을 호출합니다. 이것은 오류가있을 경우 일치하지 않는 테이블을 매우 유용하게 보여줍니다. 내 자신의 커스텀 어썰트 함수를 정의한다면 여전히 그것을 얻을 수있는 방법이 있을까요? – hugomg
util.deepcompare require ('luassert.util')에서 대부분의 어려운 작업을 수행합니다. https://github.com/Olivine-Labs/luassert/blob/9fecb18f5d31e70d28c252e24fae373687f860d7/src/assertions.lua#L123을 참조하십시오. – basicer