Karma를 사용해 브라우저 테스트를 진행하다보니 메모리가 부족해서 중간에 테스팅이 멈추는 현상이 발생했다. 브라우저에서 테스팅이 종료되기 전까지는 메모리를 해제하지 않고 계속 잡고 있다보니 테스트 종료까지 6MB 정도의 메모리가 점유되었는데 개발 환경에서 굉장한 부담이 되었다. 브라우저 내에서 테스트가 종료되면 메모리가 해제된다는 점으로 볼 때 테스팅을 여러 브라우저 윈도우로 분할해 실행하면 순간 최대 메모리 점유율을 낮출 수 있다. karma-parallel 패키지를 사용하면 테스팅을 다중 브라우저 윈도우에서 분할해 실행할 수 있다. 사용법도 쉽다. 다음 명령을 통해 설치하고 npm install --save-dev karma-parallel 기존에 사용하던 karma 설정에 다음과 같이 추가하면 된..
Karma에는 coverage를 생성해주는 모듈이 존재한다. karam-coverage라는 것인데, Istanbul 라이브러리를 활용해 구현되었고 이것 자체는 기본적으로 ES6를 지원하지 않는다. ES6 코드에 대한 coverage 생성을 위해 다음과 같은 삽질을 진행했다. 1. mocha + instanbul 조합으로 karma-coverage 없이 해보자 문제1) 브라우저 API를 써야하는데 어떻게 하지? - 방법: jsdom 라이브러리를 활용한다. 문제2) 테스트에서 필요한 외부 리소스는 어떻게 불러오지? - 방법: jsdom에 옵션을 활용한다. {runScripts: "dangerously", resources: "usable"} 문제3) 외부 라이브러리에서 필요로하는 각종 브라우저 API는 어떻..
요약 Debouncing: 마지막 이벤트 발생으로부터 지정한 interval 이후에 핸들러 실행. interval 이전에 이벤트 발생 시, interval 초기화. interval 동안 이벤트가 발생하지 않으면 마지막 이벤트가 발생했다고 보고 핸들러를 실행할 수 있다. Throttling: 이벤트가 발생하면 핸들러를 실행하고 interval 동안 다음 이벤트에 대한 핸들러 실행을 방지한다. 이벤트가 계속 발생한다고 가정했을 때 interval 간격으로 핸들러를 실행할 수 있다. 갑자기 드는 생각: 자동문 센서가 debouncing 일것 같다(경험상 throttling 방식인 곳도 있는것 같기도하다). 사람이 지나갈 땐 문이 항상 열려있고, 마지막 사람이 지나가고 일정 시간이 지나면 닫힌다. 회사 건물에 ..
- Total