[테스트]1. TDD란?(자바스크립트 환경에서의)

이동현·2022년 8월 16일
0

📕TDD란?

인용문입니다.

📕유닛 테스트란?

1.텍스트 package.json < "test" : "jest"옵션

● watch vs watchAll
: git에 커밋된 파일제외, 수정중인것만 테스트할 것인가 vs 모든파일 테스트를 할것인가

2.테스트파일 소스 작성

●제목1
test('add', () => {
  		expect(add(1, 2)).toBe(3)
});
●비동기상황 테스트코드 검증
describe('Async', () => {
  it('asyc', (done) => {
      fetchProduct().then((item) => {
          expect(item).toEqual({item: 'milk', price: 200});
          done();
      });
  });
	it('asyc - return', () => {
      return  fetchProduct().then((item) => {
          expect(item).toEqual({item: 'Milk', price: 200});
      });
  });
	it('asyc - await', async () => {
      const product = await fetchProduct();
      expect(product).toEqual({item: 'Milk', price: 200});    
  });
	it('asyc - resolves', () => {
      return expect(fetchProduct()).resolves.toEqual({
          item: 'Milk', 
          price: 200
      });
  });
it('asyc - reject', () => {
      return expect(fetchProduct('error')).rejects.toBe('netWork error');
  });
●Mock을 이용한 테스트 검증
1.
describe('check', () => {
  let onSuccess;
  let onFail;
  beforeEach(() => {
      onSuccess = jest.fn();
      onFail = jest.fn();
  });
  it('should call ss when pre is true', () => {
      check(() => true, onSuccess, onFail);
      expect(onSuccess).toHaveBeenCalledTimes(1);
      expect(onSuccess).toHaveBeenCalledWith('yes');
      expect(onFail).toHaveBeenCalledTimes(0);
  });
2.
test.js>
jest.mock('../product_client');
const fetchItems = jest.fn(async () => [
      {item: 'milk', available: true},
      {item: 'banana', available: true}
  ]);
  ProductClient.mokckImplementation(() => {
      return{
          fetchItems
      };
  });
: product_service가 의존하는 product_client를 mock으로 만들어준다.
let productService;
  beforeEach(() => {
      productService = new ProductService();
  });
const items = await productService.fetchAvailableItems();
:최상단에 기존에 require로 불러들인 ProductService(x) 새로 imple시킨 productService

3.jest.config.js

●clearMocks
:beforeEach 단계에서 mock Obj들을 mockClear()시켜줘야 한다.
profile
UnusualFrontendDeveloper

0개의 댓글