자스민은 BDD(Behavior-driven development) 테스트 프레임워크입니다.
용어
아래에 나오는 Suite들과 Spec들은 모두 Javascript의 함수입니다.
Suites
테스트 코드에서 describe 함수를 사용하여 정의하는 블럭이며, 여러개의 Spec으로 구성됩니다.
Specs
describe함수 안에서 it함수로 정의되며, spec안에는 1개 이상의 expectation으로 구성됩니다.
Expectations
expect함수로 정의되며, actual이라고도 불립니다. expectation은 기대값을 정의하는 Matcher함수의 체인을 가집니다.
예제들
Matchers
값의 기대값을 정의하며, 결과는 true나 false로 나옵니다. 반대의 값을 원한다면 Matcher앞에 not을 붙이면 됩니다.
다양한 Matcher들이 존재하며, custom matcher도 정의할 수 있습니다.
주요 Matchers
toBe: ‘===’비교 연산
toEqual: 간단한 문자열이나 변수, 객체에서 동작
toMatch: 정규식 일치 확인
toBeDefined: undefined가 아님
tobeUndefined: undefined임
toBeNull: null임
toBeTruthy: boolean으로 변할 수 있음
toBeFalsy: boolean으로 변할 수 없음
toContain: 배열에 인자가 있음
toBeLessThan: 값이 작음
toBeGreaterThan: 값이 큼
toBeCloseTo: 소수점아래 몇자리까지 같은지 확인
toThrow: 함수가 예외를 던짐
spec들의 Grouping
describe 함수들이 비슷한 spec들을 묶음
Startup Teardown
beforEach: describe 함수 내에 spec들이 시작될 때마다 실행
beforeAll: describe 함수 내에 spec들이 시작되기 전에 1번만 실행됨
afterEach: describe 함수 내에 spec들이 끝날 때마다 실행
afterAll: describe 함수 내에 spec들이 모두 끝났을 때 1번만 실행됨
this 키워드
beforeEach/it/afterEach 뭉치 내에서 this는 비어있는 object를 공유함(다른 spec과 공유안됨)
내장 describe block
describe는 spec이 정의되는 어느 공간에나 정의할 수 있습니다.
Suit과 Spec 무시
x를 앞에 붙임(ex. xdescribe, xit)
pending spec
실행되지는 않지만 출력에는 보이는 값
Spies
test double의 일종으로 describe나 it bloc내 어디서든 호출할 수 있습니다.
spy는 특별한 메소드를 가집니다.
Spies: and.callThrough
실제 함수가 그대로 동작하지만 함수가 호출됬는지는 확인가능합니다.
Spies: and.returnValue
함수가 호출되면 해당 값을 반환합니다.
Spies: and.callFake
함수가 호출되면 지정한 다른 함수가 호출됩니다.
Spies: and.throwError
함수가 호출되면 에러를 던집니다.
Spies: and.stub
언제든지 설정할 수 있으며, stub으로 변화시킵니다.
Spies: calls property
calls.any(): 한번이라도 불렸으면 true
calls.count(): 불린 횟수
calls.argsFor(index): index번째의 argument 값
calls.allArgs(): 호출된 모든 매개변수
calls.all(): context와 매개변수들을 반환
calls.mostRecent(): 가장최근에 불린 context와 매개변수들을 반환
calls.first(): 처음불린 context와 매개변수들 반환
first, mostRecent, all 함수의 object메소드는 호출한 object반환
calls.reset(): spy 초기화
매개변수들
context와 매개변수
Spies: createSpy
스파이를 만듭니다. 이 스파이는 다른 스파이와 같은 동작을 합니다.
Spies: createSpyObj
스파이들의 객체를 만듭니다.
jasmine.any
class에 해당하는 어떤 값을 반환합니다.
jasmine.objectContaining
객체에서 {key: value} pair가 존재하는지 확인합니다.
jasmine.arrayContaining
배열에 값의 배열이 존재하는지 확인
jasmine.stringMatching
객체의 {key: value}에서 value를 확인하는 함수입니다.
asymmetricMatch
custrum Matric은 object에 asymmetricMatch 속성을 통해 추가할 수 있습니다.