0Pricing
Lua Academy · 강의

describe와 it 블록

테스트 모음을 구성해 보세요.

describe와 it 블록은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

명세의 구조

busted는 두 핵심 함수로 테스트를 구성합니다: describe와 it. describe 블록은 관련 테스트를 묶고, 각 it 블록은 하나의 테스트 사례입니다.

이 구조는 행동 주도 개발에서 비롯되었으며 일반 영어처럼 읽힙니다.

describe("Stack", function()
  it("starts empty", function()
    assert.are.equal(0, Stack.new():size())
  end)
end)

describe 블록

describe는 이름 문자열과 함수를 인수로 받습니다. 이름에는 테스트 대상 단위나 기능이 드러나야 하며, 모듈이나 클래스가 그 예입니다.

함수 안의 모든 내용은 해당 그룹에 속합니다. 결과를 정리하기 위해 테스트 출력에 이름이 표시됩니다.

describe("calculator", function()
  -- tests live here
end)

it 블록

각 it 블록은 하나의 구체적인 동작을 설명합니다. 문자열은 describe가 시작한 문장을 완성해야 합니다.

함께 읽으면 "계산기"와 "두 수를 더합니다"가 의도의 명확한 명세를 이룹니다.

describe("calculator", function()
  it("adds two numbers", function()
    assert.are.equal(5, calc.add(2, 3))
  end)
end)

describe 블록 중첩하기

문맥을 표현하기 위해 describe 블록을 중첩할 수 있습니다. 안쪽 블록에서는 특정 메서드나 특별한 조건을 설명할 수 있습니다.

중첩하면 관련 사례가 함께 묶이고 읽기 쉬운 들여쓰기 출력이 만들어집니다.

describe("List", function()
  describe("push", function()
    it("adds an item", function()
      assert.are.equal(1, list:push("a"):size())
    end)
  end)
end)

before_each 설정

before_each는 해당 블록의 모든 it 앞에서 함수를 실행합니다. 테스트가 상태를 공유하지 않도록 새로운 테스트 데이터를 만드는 데 사용하십시오.

이렇게 하면 각 테스트가 격리됩니다. 한 테스트의 변경이 다음 테스트로 새어 나갈 수 없습니다.

describe("Stack", function()
  local s
  before_each(function()
    s = Stack.new()
  end)
  it("pushes", function()
    s:push(1)
    assert.are.equal(1, s:size())
  end)
end)

after_each 정리

after_each는 모든 테스트가 끝난 후 실행됩니다. 임시 파일, 열린 연결 또는 전역 상태 같은 리소스를 정리하는 데 사용하십시오.

설정과 정리를 짝지으면 테스트 사이에 환경이 초기화됩니다.

after_each(function()
  os.remove("temp.db")
end)

설정과 정리

busted는 setup과 teardown도 제공하며, 테스트마다가 아니라 describe 블록마다 한 번 실행됩니다.

테스트마다 설정하는 것이 낭비가 될 수 있는 공유 연결 열기와 같은 비용이 큰 일회성 작업에 사용하십시오.

describe("db", function()
  setup(function()
    db = connect()
  end)
  teardown(function()
    db:close()
  end)
end)

보류 중인 테스트

아직 작성하지 않은 테스트를 기록해 두고 싶을 때가 있습니다. 설명과 함께 pending을 호출하거나 함수가 없는 it 블록을 작성하십시오.

busted는 이러한 테스트를 통과나 실패가 아닌 보류 중인 상태로 보고하여 마무리하도록 알려 줍니다.

it("handles unicode", function()
  pending("not implemented yet")
end)

집중할 테스트와 제외할 테스트

디버깅하는 동안에는 테스트의 일부에 집중할 수 있습니다. 명령줄에서 --tags로 태그를 지정하거나 busted 도우미를 사용하면 필요한 항목만 실행할 수 있습니다.

한 가지 실패 영역을 반복해서 수정하는 동안 전체 테스트 모음을 실행하지 않아도 됩니다.

-- run only tests tagged 'fast'
-- busted --tags=fast

이름 지정 규칙

좋은 이름은 실패 원인을 스스로 설명해 줍니다. describe는 대상을 나타내는 말로 시작하고 it은 동작을 설명하는 동사로 시작하십시오.

"작동함"이나 "테스트1"처럼 모호한 이름은 피하십시오. 실패한 테스트가 조치를 취할 수 있는 버그 보고서처럼 읽혀야 합니다.

describe("parser", function()
  it("rejects malformed input", function()
    assert.has_error(function() parser.parse("{") end)
  end)
end)

종합하기

완전한 명세는 describe 그룹, before_each 설정, 그리고 하나의 동작에 집중된 it 사례를 결합합니다. 이 뼈대는 테스트 하나부터 수백 개까지 확장할 수 있습니다.

블록을 작게 유지하고 각 it이 하나의 동작에 집중하게 하면 출력이 가장 명확해집니다.

describe("Account", function()
  local acc
  before_each(function() acc = Account.new(100) end)
  it("withdraws funds", function()
    acc:withdraw(40)
    assert.are.equal(60, acc.balance)
  end)
end)

빠른 확인

busted 블록 구조에 대한 이해도를 테스트해 보십시오.

복습

describe는 관련 테스트를 묶고 it은 하나의 사례를 정의하여 명세처럼 읽히게 합니다. 문맥을 표현하려면 describe 블록을 중첩하십시오.

테스트마다 격리하려면 before_each와 after_each를 사용하고, 블록마다 한 번 실행되는 작업에는 setup과 teardown을 사용하십시오. 끝내지 않은 작업은 pending으로 표시하십시오.

자주 묻는 질문

“describe와 it 블록” 강의는 무료인가요?

네 — “describe와 it 블록” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“describe와 it 블록”에서 뭘 배우나요?

테스트 모음을 구성해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Lua Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“describe와 it 블록” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 테스트가 필요한 이유
  2. describe와 it 블록
  3. 검증
  4. 모의 객체와 스파이
← Lua Academy(으)로 돌아가기