검증
예상되는 동작을 표현해 보세요.
검증은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
어설션의 역할
어설션은 테스트의 핵심입니다. 반드시 참이어야 하는 사실을 명시합니다. 사실이 참이면 테스트가 계속되고, 그렇지 않으면 busted가 유용한 메시지와 함께 실패를 기록합니다.
busted는 전역 assert 테이블을 통해 접근하는 luassert 라이브러리를 사용합니다.
assert.are.equal(4, 2 + 2)are.equal
assert.are.equal은 == 연산자로 같은지 확인합니다. 첫 번째 인수는 예상 값이고 두 번째 인수는 실제 값입니다.
숫자, 문자열, 불리언에는 작동하지만 테이블의 경우 내용이 아니라 동일성을 비교합니다.
assert.are.equal("hello", greet())
assert.are.equal(10, count)테이블의 are.same
테이블 내용을 깊이 비교하려면 assert.are.same을 사용하십시오. 두 테이블이 같은 값을 담고 있는지 재귀적으로 확인합니다.
데이터 구조에는 same을, 기본형이나 동일성 확인에는 equal을 사용하십시오.
assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)참으로 평가되는 값
assert.is_true와 assert.is_false는 정확히 불리언 값인지 확인합니다. assert.is_truthy는 nil이나 false가 아닌 모든 값을 허용합니다.
불리언 결과를 명확히 예상할 때는 엄격한 변형을 선택하십시오.
assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())nil 확인
assert.is_nil은 값이 nil인지 확인하고, assert.is_not_nil은 값이 존재하는지 확인합니다. 조회 결과를 확인할 때 자주 사용합니다.
nil과 equal로 비교하는 것보다 의도를 더 분명하게 드러냅니다.
assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])is_not으로 부정하기
대부분의 어설션은 is_not을 삽입하거나 are_not 형식을 사용해 부정할 수 있습니다. 이는 어떤 값이 달라야 한다는 뜻을 표현합니다.
예를 들어 assert.are_not.equal은 두 값이 다를 때 통과합니다.
assert.are_not.equal(1, 2)
assert.is_not_nil(result)오류 테스트
코드가 오류를 발생시키는지 확인하려면 코드를 함수로 감싼 뒤 assert.has_error에 전달하십시오. busted가 함수를 호출하고 오류를 발생시켰는지 확인합니다.
두 번째 인수로 예상 문자열을 전달하면 오류 메시지도 확인할 수 있습니다.
assert.has_error(function()
withdraw(-5)
end, "amount must be positive")has_no.errors
반대쪽 확인에는 assert.has_no.errors를 사용합니다. 감싼 함수가 오류를 발생시키지 않고 실행되면 통과합니다.
반환 값 자체를 확인하지 않더라도 정상 경로의 호출이 중단되지 않는지 확인할 때 유용합니다.
assert.has_no.errors(function()
parse("valid input")
end)사용자 지정 실패 메시지
대부분의 어설션에 메시지를 추가하여 실패 원인을 더 분명하게 설명할 수 있습니다. 추가 인수로 전달하면 보고서에 예상 조건이 설명됩니다.
명확한 메시지는 이해하기 어려운 실패를 해결 가능한 문제로 바꿔 줍니다.
assert.is_true(ok, "login should succeed")수정자와 일치 검사
luassert는 더 풍부한 확인을 위한 수정자와 매처를 제공합니다. 예를 들어 assert.matches는 문자열을 Lua 패턴과 비교합니다.
출력이 달라질 수 있어 정확히 일치하는지 확인하는 것이 지나치게 엄격할 때 유용합니다.
assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)적절한 어설션 선택
명확성을 위해 가장 구체적인 어설션을 선택하십시오. 테이블에는 same을, 기본형에는 equal을, 실패에는 has_error를, 불리언에는 참으로 평가되는지 확인하는 검사를 사용하십시오.
구체적인 어설션은 더 나은 실패 메시지를 제공하므로 디버깅 속도가 빨라집니다.
describe("queue", function()
it("dequeues in order", function()
assert.are.same({"a", "b"}, q:drain())
end)
end)빠른 확인
busted 어설션에 대한 이해도를 확인해 보십시오.
복습
luassert는 busted의 assert 테이블을 구성합니다. 기본형에는 are.equal을, 테이블의 깊은 비교에는 are.same을 사용하고, 적절한 경우 참으로 평가되는지 또는 nil인지 확인하십시오.
has_error로 테스트 실패를, has_no.errors로 성공을 확인하십시오. is_not으로 부정하고, 더 명확한 보고서를 위해 메시지를 추가하십시오.
자주 묻는 질문
“검증” 강의는 무료인가요?
네 — “검증” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“검증”에서 뭘 배우나요?
예상되는 동작을 표현해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Lua Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“검증” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.