JS expect함수 [TIL 18일차]

JUNGHUN KIM·2021년 7월 2일
0
post-custom-banner

expect함수

테스트 하는 값과 기대값을 비교하기 위해 expect함수를 사용

expect함수의 사용법

expect(테스트하는값).기대하는조건 // 기대하는조건'에 해당하는 함수를 matcher라고 함.

true,false matcher

expect(true).to.be.true / expect(false).to.be.false 와 같이 사용이 가능

예시1
case1. expect(isEven(3)).to.be.true
=>'isEven(3)'의 결과값은 참(true)이어야 한다'

예시2
let a = 1+1;
let b = 2;
expect (a ===b ).to.be.true // a===b와 값이 같으므로 expec함수가 기대하는 조건과 부합.

equal matcher

  • to.be.true, to.be.false만을 가지고도 많은 테스트 케이스를 작성할수 있지만 A와 B를 '비교한 결과가' 참이지를 확인하는 대신이 A와 B를 바로 같은지 확인하는 matcher가 있음. <== .equal
  • equal의 같우 두 값이 타입까지 동일한지 검사함 '=='가 아닌 '==='

expect('테스트하는값').to.equal('기대하는값');

예시1
expect(1 + 2).to.equal(3)
=> 'sum(1, 2)의 결과값은 3과 같아야(equal) 한다'

예시2
let a = (1+1).toString();
expect(a).to.equal(2); <--- 오류 .equal에 있는 2는 type이 number이기 때문
expect(a).to.equal("2") <-- 정답

.to.deep.equal

배열의 요소나 객체의 속성이 서로 같은지 확인하는 matcher

equal과 deep equal의 차이..?
deep equal은 객체 내부까지 비교해서 일치여부를 체크하는 메소드이다.

equal 같은경우는 안에있는 값을 비교하지만
deep equal같은 경우는 객체를 체크하여 나타냄

expect(arr.slice(3, 100)).to.deep.equal(['jelly']);
expect(arr[5]).to.equal('changed in assignedArr');

deep.equal같은경우는 배열과 그 배열의 요소를 나태날때 사용.
물론 배열이나 객체가 아닌경우는.. equal과 동일한 결과가 나옴.

profile
개발자가 되고 싶은 일문학도
post-custom-banner

0개의 댓글