Jasmine 프레임워크 튜토리얼: 예제를 사용한 단위 테스트

⚡ 스마트 요약

재스민은 행동 중심적입니다. Java브라우저나 DOM 없이 Node.js 단위 테스트를 실행하는 스크립트 테스트 프레임워크입니다. describe 블록, spec 및 expect 매처를 사용하여 내보낸 모든 함수가 문서화된 대로 동작하는지 검증합니다.

  • 🔘 프레임워크 역할: 재스민은 어떤 것이든 테스트합니다. Java브라우저, DOM 또는 보조 라이브러리 없이 실행되는 스크립트입니다.
  • ☑️ 환경 설정: 모듈을 설치하고, jasmine init을 실행한 다음 spec/support/jasmine.json 파일을 검사하십시오.
  • 사양 패턴: describe는 스위트의 이름을 지정하고, spec을 정의하며, expect는 결과를 검증합니다.
  • 🧪 매처: toBe, toEqual, toContain, toThrow 및 toHaveBeenCalled는 대부분의 어설션을 다룹니다.
  • 🛠️ 현대 달리기 선수: 유지 관리되는 jasmine 패키지는 유지 관리가 중단된 jasmine-node 모듈을 대체합니다.
  • 📊 프레임워크 선택: Jasmine은 어설션과 스파이를 제공하고, Jest는 병렬 실행과 스냅샷을 추가합니다.

Node.js 애플리케이션 단위 테스트를 위한 Jasmine 프레임워크 튜토리얼

JasmineJS란 무엇인가요?

Jasmine은 오픈 소스이며 가장 인기가 높습니다. Java모든 종류의 테스트를 위한 스크립트 라이브러리 테스트 프레임워크 Java스크립트 응용 프로그램. Jasmine은 각 줄이 동작 주도 개발(BDD) 절차를 따르도록 합니다. Java스크립트 문장이 적절하게 단위 테스트되었습니다.

Jasmine Framework는 어떤 용도로 사용되나요?

테스팅은 모든 애플리케이션의 핵심 요소입니다. Node.js 단위 테스트에 사용할 수 있는 프레임워크로는 Jasmine이 있습니다. 2000년대 초반에도 테스트 프레임워크가 존재했습니다. JavaScript JsUnit이라는 애플리케이션입니다. Later 이 프레임워크는 업그레이드되어 이제 Jasmine으로 알려졌습니다.

Jasmine은 자동화에 도움이 됩니다. 단위 테스트이는 개발 과정에서 상당히 중요한 관행이 되었습니다.ping 최신 웹 애플리케이션 배포.

이 Jasmine 튜토리얼에서는 Jasmine을 사용하여 환경을 설정하는 방법과 첫 번째 Node.js 애플리케이션에 대해 Jasmine 테스트를 실행하는 방법을 배웁니다.

Node.js 애플리케이션 테스트를 위한 Jasmine

재스민은 행동 주도 개발(BDD) 테스트 프레임워크 Java스크립트입니다. 그렇습니다. 지원 브라우저, DOM 또는 기타 요소에 의존 Java스크립트 프레임워크입니다. 따라서 웹사이트에 적합합니다. Node.js를 프로젝트든 어디든 Java스크립트를 실행할 수 있습니다. Jasmine을 사용하려면 먼저 필요한 Jasmine 모듈을 다운로드하여 설치해야 합니다.

Jasmine 테스트 환경을 설정하는 방법

이 Jasmine Node.js 튜토리얼의 다음 단계에서는 환경을 초기화하고 Jasmine 설정 파일을 살펴보아야 합니다. 아래 단계는 환경에 Jasmine을 설정하는 방법을 보여줍니다.

단계 1) NPM 모듈 설치
당신은해야 NPM 설치 jasmine 모듈은 Node 애플리케이션 내에서 Jasmine 프레임워크를 사용하기 위한 것입니다. jasmine-node 모듈을 설치하려면 아래 명령어를 실행하세요.

npm install jasmine-node

버전 참고 (2026): 위의 기존 명령어는 여전히 작동하지만, 재스민 노드 해당 모듈은 유지보수 모드이며 Jasmine 1.3을 포함하고 있으므로 레거시 프로젝트에서만 사용하세요. 새로운 Node.js 작업에서는 유지보수 버전이 설치됩니다. 재스민 CLI 개발 종속성으로 사용되며 npx를 통해 호출됩니다.

npm install --save-dev jasmine
npx jasmine init

재스민 6.x 현재 주요 릴리스이며 Node.js 20, 22 및 24를 지원하며, Node.js 24는 2026년에도 활성 LTS 릴리스입니다.

단계 2) Jasmine 환경 초기화
프로젝트 초기화 – 이 과정을 통해 Jasmine은 spec 디렉토리와 설정 JSON 파일을 생성합니다. spec 디렉토리는 모든 테스트 파일을 저장하는 데 사용됩니다. 이렇게 하면 Jasmine은 모든 테스트 파일의 위치를 ​​파악하고 그에 따라 테스트를 실행할 수 있습니다. JSON 이 파일은 Jasmine에 대한 특정 구성 정보를 저장하는 데 사용됩니다.

Jasmine 환경을 초기화하려면 아래 명령어를 실행하세요.

jasmine init

단계 3) 구성 파일을 검사하십시오.
구성 파일은 spec/support 폴더에 jasmine.json으로 저장됩니다. 이 파일은 Jasmine 실행기에 포함할 소스 파일과 사양 파일을 열거합니다.

아래 스크린샷은 Jasmine의 jasmine.json 파일의 일반적인 예시를 보여줍니다.

스펙 지원 폴더에 있는 Jasmine 설정 파일에서 스펙 디렉토리와 스펙 파일들을 보여줍니다.

  1. spec 디렉터리가 여기에 지정되어 있습니다. 앞서 언급했듯이 jasmine이 실행되면 이 디렉터리에 있는 모든 테스트를 검색합니다.
  2. 다음으로 주목해야 할 것은 spec_files 매개변수입니다. 이는 생성된 테스트 파일이 무엇이든 'spec' 키워드가 추가되어야 함을 나타냅니다.

설정 참고 사항: Jasmine 6.x에서도 동일한 파일이 허용됩니다. 도우미각 스펙마다 한 번씩 로드되는 것과 환경 random 및 stopSpecOnExpectationFailure와 같은 옵션을 포함하는 블록입니다. 기본 spec_files 글로브는 다음과 같습니다. **/*[sS]pec.?(m)js그리고 다른 파일을 전달할 수도 있습니다. –config 또는 JASMINE_CONFIG_PATH 변하기 쉬운.

다음 Jasmine 프레임워크 튜토리얼에서는 Jasmine을 사용하여 Node.js 애플리케이션을 테스트하는 방법을 알아봅니다.

Jasmine을 사용하여 Node.js 애플리케이션을 테스트하는 방법

Node.js 애플리케이션에 Jasmine 단위 테스트를 사용하려면 일련의 단계를 따라야 합니다.

아래 예시에서는 테스트가 필요한 두 숫자를 더하는 모듈을 정의할 것입니다. 그런 다음 테스트 코드가 포함된 별도의 코드 파일을 정의하고 Jasmine을 사용하여 해당 덧셈 함수를 테스트합니다.

단계 1) 테스트해야 할 코드를 정의합니다. 두 숫자를 더하고 결과를 반환하는 함수를 정의합니다. 이 코드는 "Add.js"라는 파일에 작성됩니다.

아래 스크린샷은 완성된 Add.js 모듈을 보여주며, 동일한 코드가 그 아래에 텍스트로 반복되어 있습니다.

Add.js 모듈은 두 매개변수의 합을 반환하는 AddNumber 함수를 내보냅니다.

var exports=module.exports={};
exports.AddNumber=function(a,b)
{
return a+b;
};

Code 설명

  1. "내보내기" 키워드는 이 파일에 정의된 기능이 실제로 다른 파일에서 액세스될 수 있도록 하는 데 사용됩니다.
  2. 그런 다음 'AddNumber'라는 함수를 정의합니다. 이 함수는 2개의 매개변수 a와 b를 사용하도록 정의되었습니다. 이 함수는 다른 응용 프로그램 모듈에서 액세스할 수 있는 공용 함수로 만들기 위해 "내보내기" 모듈에 추가됩니다.
  3. 우리는 마침내 함수가 매개변수의 추가된 값을 반환하도록 만들고 있습니다.

단계 2) 다음으로, Add.js 파일의 "Add" 함수를 테스트하는 데 사용할 Jasmine 테스트 코드를 정의해야 합니다. 아래 코드를 라는 파일에 넣어주세요. add-spec.js.

주의 사항Jasmine이 테스트 파일을 인식할 수 있도록 테스트 파일에 'spec'이라는 단어를 추가해야 합니다.

아래 스크린샷은 동일한 사양 파일이 편집기에서 열린 모습을 보여줍니다.

add-spec.js 파일에는 describe 스위트와 AddNumber가 11을 반환한다는 것을 검증하는 IT 스펙이 포함되어 있습니다.

var app=require("../Add.js");
describe("Addition",function(){
it("The function should add 2 numbers",function() {
var value=app.AddNumber(5,6);
expect(value).toBe(11);
});
});

Code 설명

  1. 이 파일에서 'AddNumber' 기능을 테스트할 수 있도록 먼저 Add.js 파일을 포함해야 합니다.
  2. 이제 테스트 모듈을 만드는 중입니다. 테스트 모듈의 첫 번째 부분은 기본적으로 테스트 이름을 지정하는 메서드를 설명하는 것입니다. 이 경우 테스트 이름은 "Addition"입니다.
  3. 다음 부분은 'it' 메소드를 사용하여 테스트에 대한 설명을 제공하는 것입니다.
  4. 이제 AddNumber 메서드를 호출하고 매개변수 5와 6을 전달합니다. 이 매개변수들은 Add.js 파일의 AddNumber 메서드로 전달됩니다. 반환 값은 value라는 변수에 저장됩니다.
  5. 마지막 단계는 비교 또는 실제 테스트를 수행하는 것입니다. AddNumber 함수가 반환하는 값이 11이 될 것으로 예상하므로 expect(value).toBe(예상 값) 메서드를 사용하여 이를 정의합니다.

산출

  1. 테스트를 실행하려면 jasmine 명령을 실행해야 합니다.
  2. 아래 스크린샷은 Jasmine 명령어를 실행한 후 add-spec.js라는 테스트가 있음을 감지하고 해당 테스트를 실행하는 것을 보여줍니다. 테스트에 오류가 있으면 오류가 표시됩니다.

jasmine 명령어의 콘솔 출력으로, 실행된 add-spec 테스트 결과를 보여줍니다.

Add 예제에서는 하나의 매처만 사용하지만, Jasmine은 모든 매처를 제공합니다. 아래 표에는 작성하게 될 거의 모든 어설션을 포괄하는 매처 목록이 나와 있습니다.

가장 많이 사용하게 될 자스민 성냥

매처는 expect() 다음에 오는 비교입니다. 매처 앞에 .not을 연결하여 이를 반전시킬 수 있습니다. 예를 들어 expect(value).not.toBe(11)과 같습니다.

매처 무엇을 확인하나요? 일반적인 사용
장차 ~ 가 되는 엄격한 동일성, ===와 같은 비교 expect(value).toBe(11)
같음 객체와 배열의 심층적 동등성 expect(user).toEqual({id: 1})
포함하기 배열 또는 문자열 내의 멤버십 expect(files).toContain('add-spec.js')
정의되지 않음 값이 정의되지 않았습니다 expect(app.AddNumber).toBeDefined()
던지다 래핑된 함수에서 오류가 발생합니다. expect(callAdd).toThrow()
불리게 되었어야 했다 스파이가 최소 한 번 이상 소환되었습니다. expect(logger.write).toHaveBeenCalled()

두 가지 습관을 들이면 오류 메시지를 읽기 쉽게 유지할 수 있습니다. `toBe`는 기본형 데이터 유형이나 동일한 참조에만 사용하세요. 내용이 같은 두 객체는 ​​절대 `===` 관계가 성립하지 않기 때문입니다. 구조체에는 `toEqual`을 사용하고, 인수가 호출 자체만큼 중요한 경우에는 `toHaveBeenCalledWith`를 추가하세요.

Jasmine에서의 설치, 해체 및 스파이 활동

실제 스위트에는 공유 상태와 느린 협업자를 위한 더블링 기능이 필요합니다. Jasmine은 추가 패키지 없이 이 두 가지를 모두 제공합니다.

  • 각각 이전과 각각 이후 describe 블록 내의 모든 스펙 실행 전후에 실행되며, 이는 픽스처를 재구축하기에 가장 적합한 위치입니다.
  • 모든 것 이전과 모든 것 이후 블록 전체에 대해 한 번만 실행되므로 연결부 개설과 같은 비용이 많이 드는 작업에만 사용하십시오.
  • spyOn(object, 'method') 실제 방법을 다음으로 대체합니다 tracking double; 응답을 제어하려면 .and.returnValue()를 추가하세요.
  • jasmine.createSpy('name') 연결할 객체가 없는 콜백에 대해 독립형 double을 생성합니다.
  • 비동기 사양 비동기 함수로 선언되어 대기될 수도 있고, 프로미스를 반환할 수도 있으며, 정확히 한 번만 호출되어야 하는 완료 콜백을 받을 수도 있습니다.

스파이는 스펙 간에 재설정되므로 스위트에서 스텁된 메서드가 다음 테스트로 유출되는 일이 없습니다. 이러한 격리 덕분에 실패한 스펙은 여러 결함이 아닌 하나의 결함을 가리키게 되는데, 이는 앞서 설명한 것과 동일한 원칙입니다. 단위 테스트 기초.

재스민 vs 모카 vs 제스트

Jasmine은 지배적인 세 가지 프레임워크 중 하나입니다. Java스크립트 테스트의 경우, 선택은 대개 얼마나 많은 배선을 보유할 것인지에 달려 있습니다.

아래 재스민 속 모카 농담
어설 션 내장 추가됨, 보통 차이 내장
스파이와 조롱 내장 추가됨, 보통 시논 내장
실행 일련의 일련의 프로세스 전반에 걸친 병렬 처리
스냅 샷 아니 아니 가능
공동 주택 Angular, 일반 Node.js 유연한 Node.js 스택 React 및 최신 번들러

Pick 모카 자신만의 어설션 및 모킹 스택을 구성하고 싶을 때, 농담 병렬 실행 시에는 구성 관리보다 코드 커버리지와 스냅샷이 더 중요합니다. Jasmine은 완전한 기능을 갖춘 가장 가벼운 옵션으로, 이러한 이유로 여전히 널리 사용되고 있습니다. 자동화 테스트 스위트.

자주 묻는 질문

Jasmine은 spec_dir을 접두사로 읽고, spec_files에 나열된 모든 glob 패턴을 읽어 일치하는 파일만 실행합니다. 느낌표로 시작하는 경로는 제외되며, 헬퍼 함수는 스펙이 로드되기 전에 한 번 로드되어 공유 설정을 등록합니다.

async라고 명시하고 호출을 기다리거나, 프로미스를 반환하거나, 완료 콜백을 받도록 사양을 지정하세요. 비동기 가이드 done 함수는 정확히 한 번만 실행되어야 하며, 그렇지 않으면 오류가 잘못된 사양에 기록된다고 경고합니다.

실행기 뒤에 경로 또는 글로브 패턴을 전달하세요. 예를 들어 `npx jasmine spec/appSpec.js`와 같이 입력합니다. `--filter` 플래그는 describe 이름과 일치하는 패턴을 허용하므로 단일 테스트 스위트를 작업하는 동안 빠른 피드백을 받을 수 있습니다.

The 재스민 노드 해당 패키지는 유지보수 모드에 있으며, 여전히 Jasmine 1.3을 포함하고 있고, Node.js 10 및 12를 현재 버전으로 명시하고 있습니다. 공식 Jasmine 패키지는 다음과 같습니다. trac프레임워크를 제거하고 지원되는 Node.js 버전을 사용하는 대신,

`xit` 또는 `xdescribe`처럼 스펙 앞에 `x`를 붙이면 Jasmine은 해당 스펙을 대기 중으로 보고합니다. `fit` 또는 `fdescribe`처럼 앞에 `f`를 붙이면 선택된 스펙만 실행됩니다. 커밋하기 전에 두 접두사를 모두 제거하세요.

AI 어시스턴트는 기존 모듈에서 몇 초 만에 설명 블록, 매처 및 예외 상황을 생성하고 간헐적으로 오류가 발생하는 스위트를 표시합니다. 하지만 생성된 모든 사양은 여전히 ​​검토가 필요합니다. 잘못된 동작에 대한 확신에 찬 주장이 결함을 숨길 수 있기 때문입니다.

GitHub 부조종사 입력하는 동안 스펙 본문이 자동으로 완성되며, 에이전트 모드를 사용하면 리팩토링 후 손상된 스펙을 수정하는 풀 리퀘스트를 생성할 수 있습니다. 변경 사항을 제안으로 간주하고 직접 테스트 스위트를 실행해 보세요.

Angular는 여전히 Jasmine 사양의 스캐폴딩을 제공합니다. 찬성trac바위 산 Jasmine은 서비스가 중단되기 전까지 기본 프레임워크로 사용되었습니다. 현재 팀들은 브라우저용 프레임워크로 Jasmine을 Karma와 함께 사용하거나, 브라우저 워크플로우를 다른 프레임워크로 이전하고 있습니다. Cypress 그리고 극작가.

이 게시물을 요약하면 다음과 같습니다.