테스트 주도 개발은 Test Driven Development의 약자이다. TDD는 테스트 코드를 작성하고 코드를 하나씩 통과시켜서 만드는 개발방법이다. 대표적인 자바스크립트 테스트 툴은 karma, mocha, jest,cypress 등이 있다.
자동차 경주 게임, 로또 과제를 진행하면서 매번 계속해서 제대로 동작하는지 과제 결과를 열어서 일일이 값을 넣어주고 테스트 해보면서 TDD의 중요성을 느꼈다.
테스트 그룹을 묶어주는 역할, 그안의 콜백함수 내에 테스트에 쓰일 가짜 변수, 객체들을 선언하여 일회용으로 사용할 수 있다.
이 두 함수는 완전히 동일한 기능을 하는 함수다.
기존 많이 사용되었던 Mocha나 Jasmin 같은 테스트 라이브러리에서 함수명을 it()을 사용하였기 때문에, Jest에서도 it()을 test() 함수의 별칭으로 제공해주고 있는 것이다.
테스트하는 값과 기대값을 비교하기 위해 사용하는 함수이다.
expect(테스트값).to.equal(기대하는값);
테스트값과 기대하는값이 일치하는지 테스트하는 함수이다.
일치연산자(===
) 같이 비교한다.
expect(테스트값).to.eql(기대하는값);
const myObject = {
testProperty: 'testValue',
deepObj: {
deepTestProperty: 'deepTestValue'
}
}
const anotherObject = {
testProperty: 'testValue',
deepObj: {
deepTestProperty: 'deepTestValue'
}
}
const myOtherReference = myObject;
expect(myObject).to.eql(anotherObject); // true: 모든 프로퍼티의 값이 같기 때문.
expect(myObject).to.eql(myOtherReference) // true: 위와 이유 같음.
equal
과 다르게 eql
은 동일한 값을 가지고 있으면 통과한다.
describe('group1', () => {
it('일치하는지 확인하는 테스트', () => {
expect(기대하는값).기대하는조건;
expect(isEven(5)).to.be.true; // 'isEven(5)'의 결과값은 참(true)이어야 한다.
expect(3 + 4).to.be.equal(7); // '3+4'의 결과가 7과 같아야(equal)한다.
expect(obj1).to.be.eql({ a: 2 }); // 'obj1'의 값과 '{a:2}'과 안의 값이 같아야한다.
});
});