Basic Matchers
.toBe()
.toBe()
는 Object.is()
를 사용해 정확히 일치하는지를 판단한다.
.toEqual()
- object 의 value 확인이 필요할 때에는 toEqueal을 사용하자.
const can1 = {
flavor: 'grapefruit',
ounces: 12,
};
const can2 = {
flavor: 'grapefruit',
ounces: 12,
};
describe('the cans on my desk', () => {
test('have all the same properties', () => {
expect(can1).toEqual(can2);
});
test('are not the exact same can', () => {
expect(can1).not.toBe(can2);
});
});
.toMatch()
- 내부에 regex 또는 string을 넣어서 일치하는지 판단한다.
.toContain()
- Array 나 iterable 을 대상으로 내부에 해당 값이 존재하는지 테스트
test('Shopping list should have milk', ()=> {
expect(list).toContain('milk');
expect(new Set(list)).toContain('milk');
});
숫자에 사용하는 다양한 matchers
.toBeGreaterThan()
.toBeGreaterThanOrEqual()
.toBeLessThan()
.toBeLessThanOrEqual()
.toBeCloseTo()
자주쓸것 같은 Matcher
.toBeTruthy()
- if 문 내부에서 쓰이는 함수같은 경우에 그 값을 테스트하는 용으로 사용하면 좋음
drinkSome();
if (checkThirsty()) {
drinkMore();
}
test('drink', ()=> {
drinkSome();
expect(checkThirsty()).toBeTruthy();
});
.toBeFalsy()
- 같은 맥락
if (!value)
한 값들을 테스트하기 좋음
.resolves()
- promise 가 resolve 되었을 때의 결과값을 테스트
test('resolves to lemon', async ()=> {
await expect(Promise.resolve('lemon').resolves.toBe('lemon');
await expect(Promise.resolve('lemon').resolves.not.toBe('apple');
});
.toHaveBeenCalled()
- jest.fn() 으로 만든 mock function 을 이용해서 원하는 parameter로만 함수가 불리는지 테스트
function drinkAll(callback, flavour) {
if (flavour !== 'octopus') {
callback(flavour);
}
}
describe('drinkAll', () => {
test('drinks something lemon-flavoured', () => {
const drink = jest.fn();
drinkAll(drink, 'lemon');
expect(drink).toHaveBeenCalled();
});
test('does not drink something octopus-flavoured', () => {
const drink = jest.fn();
drinkAll(drink, 'octopus');
expect(drink).not.toHaveBeenCalled();
});
});