본문 바로가기

dev/Test

mirage.js with react.js mirage.js mirage.js는 API 서버를 mocking 하는 기능을 제공합니다. 작동 방식은 클라이언트가 보내는 리퀘스트를 인터셉트해서 mock response를 보내주는 방식입니다. 일종의 가짜 서버를 만드는 방식이라 테스팅 뿐만 아니라 개발에도 활용할 수 있습니다. Mirage is a JavaScript library that lets frontend developers mock out backend APIs. Unlike other mocking libraries, Mirage makes it easy to recreate dynamic scenarios, the kind that are typically only possible when using a real production se..
Jest import (ESM)기능 활성화하기 (with 프로그래머스 과제관) 프로그래머스 과제관의 vanilla.js 과제를 복기하던 도중 문제가 생겼다. 프로젝트가 기본적으로 Ecmascript modules(이하 ESM)를 지원하지 않아서 import 구문을 사용할 수 없었다. 이 문제같은 경우에는 단순히 ESM을 사용한다는 것만 명시해주면 되기 때문에 수정이 어렵지 않았다. // index.html // package.json { "type": "module" } 문제는 ESM을 활성화하니 Jest에서 에러가 났다. node 기반의 테스트 환경이기 때문에 ESM을 기본적으로는 지원하지 않기 때문이다. 이전에는 이 에러를 수정하고 ESM을 사용하기 위해서 상당한 삽질(?)이 필요했던 것 같은데, Jest 25.4.0 버전 이후로는 설정이 매우 간단해졌다. [Meta: Nati..
Mock vs Stub Test Double 유닛 테스의 테스트 케이스는 테스트 대상이 의존하는 것에 독립적이어야 한다.즉, 테스트 대상을 격리시키는 것이 필요하다. 이를 가능하게 하는 방법은 실제 대상을 모방한 가짜를 사용하면 된다.이렇게 사용되는 대역을 stub/Mock/Fake라고 부른다. 그리고 이들을 묶어 Test Double(테스트 대역)이라고 부른다. Mock vs StubMock Object : 행위 검증(behavior verification)에 사용Stub : 상태 검증(state verification)에 사용Mock Object의 위키피디아의 정의는 다음과 같다.In object-oriented programming, mock objects are simulated objects that mimic the..
Spring boot에서 JPA 테스트하기 @DataJpaTest를 이용해 쉽게 JPA 테스트 환경을 구축할 수 있다. @DataJpaTest는 다음 기능을 제공한다.in-memory db 생성(real db를 사용하고자 할 경우 @AutoConfigureTestDatabase(replace = Replace.NONE))@Entity 클래스 스캔(일반적인 다른 컴포넌트는 스캔하지 않음)@Transactional 어노테이션을 포함 (이 옵션을 끄려면 @Transactional(propagation = Propagation.NOT_SUPPORTED) )TestEntityManager 빈 생성 Spring Boot Test 에 상세한 내용이 있다.한글에다가 잘 정리되어 있어 spring test 관련 내용을 학습하기에 좋다.
Spring boot Rest controller 유닛테스트 tutorials point 에 기본적인 내용은 모두 수록되어 있다. 튜토리얼을 따라하면 정상적으로 테스트가 수행된다. [발생할 수 있는 오류]1. 특정 bean을 찾을 수 없다는 에러(해결책)ex) org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.github.yoonho.studytime.service.users.UsersServiceImpl' available
TDD 개념 정리 TDD 개발 원칙Clean code that works오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.중복을 제거한다. 실패하는 테스트 코드를 한 번에 하나 이상 작성하지 않는다. TDD 장점ㆍ개발자의 방향을 잃지 않게 유지: 현재 자신의 개발 내용 및 진척 상황을 항상 살펴볼 수 있다.ㆍ품질 높은 소프트웨어 모듈 보유 : 간결한 코드 유지 가능ㆍ자동화된 단위 테스트 케이스 소유: 개발자가 필요한 시점에 언제든 수행할 수 있으며 시스템의 이상 유무를 바로 확인할 수 있다.ㆍ사용설명서 & 의사 소통의 수단: 작성된 테스트 케이스는 제품 코드 사용 설명서이자 동시에 다른 개발자와 소통하는 커뮤니케이션 통로가 된다. (제품 코드 API 사용 예시가 된다.)ㆍ설계 개선 : 테스트 케이스 작성 시 ..