DOM 조작을 위해 Jest 쓰기 단위 테스트 사용
12986 단어 testingjavascript
하나의 파일
index.html
에 HTML 및 JavaScript 조각 코드가 있는 경우 다음은 할 일 목록입니다.<html>
<body>
<input id="newTodo" />
<button onclick="addTodo()">Add todo</button>
<ol id="todoList"></ol>
<script>
const addTodo = () => {
const newTodoInput = document.getElementById('newTodo');
let currentTodoList = document.getElementById('todoList').innerHTML;
currentTodoList += `<li>${newTodoInput.value}</li>`;
document.getElementById('todoList').innerHTML = currentTodoList;
newTodoInput.value = '';
}
</script>
</body>
</html>
음...이 할일 목록은 사람들이 테스트 케이스를 작성하는 방법을 잘 모릅니다. 이 코드는 DOM과 JavaScript의 논리를 혼동하기 때문입니다. 따라서 우선
index.html
에서 할일 목록 분해 제어 논리를 수행해야 합니다.<html>
<body>
<input id="newTodo" />
<button id="addTodo">Add todo</button>
<ol id="todoList"></ol>
<script type="text/javascript" src="./todolist.js"></script>
</body>
</html>
todo 목록 이동 로직 정보
todoList.js
파일:const addTodo = () => {
const newTodoInput = document.getElementById('newTodo');
let currentTodoList = document.getElementById('todoList').innerHTML;
currentTodoList += `<li>${newTodoInput.value}</li>`;
document.getElementById('todoList').innerHTML = currentTodoList;
newTodoInput.value = '';
}
document.getElementById('addTodo').addEventListener('click', addTodo);
현재 보기는 보기이고 논리는 논리이므로 JavaScript에 대한 테스트 사례를 매우 쉽게 작성할 수 있지만...DOM이 없습니다. 어떻게 트리거해야 합니까
addTodo
? 예! 그래서 우리는 addTodo
의 테스트 케이스를 위해 DOM을 준비해야 합니다!언급한 대로document of Jest:
Jest ships with jsdom which simulates a DOM environment as if you were in the browser. This means that every DOM API that we call can be observed in the same way it would be observed in a browser!
따라서 Jest를 사용할 때 DOM 환경을 매우 쉽게 시뮬레이션하고 Jest 설치를 시작하고 테스트 케이스를 작성할 수 있습니다!
프로젝트에 Jest 설치(npm 또는 NodeJS 환경이 없는 경우 시작하기 전에 Node를 다운로드해야 함):
npm install jest
다음으로 파일
todoList.test.js
을 추가하고 테스트 사례를 작성합니다.test('Check addTodo able add todo to todoList', () => {
});
위의 테스트 케이스 이름처럼 테스트 기능
addTodo
이 todoList에 실제 추가될 수 있기를 원합니다.쓰기 테스트 사례를 세 부분으로 나누었습니다.
어떤 요소가
addTodo
필요한지 알아내야 합니까? todoList.js
를 살펴보겠습니다. 먼저 id가 button
인 addTodo
가 필요합니다. 이를 위해 addTodo
의 클릭 이벤트를 추가하고 id가 input
인 newTodo
도 필요합니다. 마지막으로 필요한 id의 aol
는 할 일 목록을 표시하기 위한 todoList
입니다.예! 세 가지 요소만 있으면
addTodo
필요합니다! HTML 파일의 다른 요소는 신경 쓰지 않고 테스트 사례를 위한 요소만 준비합니다.test('Check addTodo able add todo to todoList', () => {
document.body.innerHTML = `
<input id="newTodoInput" />
<button id="addTodoBtn">Add todo</button>
<ol id="todoList"></ol>
`;
});
require
가져오기todoList.js
파일을 사용하여 준비된 요소에 로직을 추가합니다. 로직은 addTodo
입니다. 테스트 케이스에서도 테스트 대상입니다.test('Check addTodo able add todo to todoList', () => {
document.body.innerHTML = `
<input id="newTodoInput" />
<button id="addTodoBtn">Add todo</button>
<ol id="todoList"></ol>
`;
require('../todolist.js');
});
input
을 작성하고 addTodo
로 트리거button
한 다음 innerHTML
의 ol
가 올바른지 확인하여 새 할일 추가!test('Check addTodo able add todo to todoList', () => {
document.body.innerHTML = `
<input id="newTodoInput" />
<button id="addTodoBtn">Add todo</button>
<ol id="todoList"></ol>
`;
require('../todolist.js');
const newTodoInput = document.getElementById('newTodoInput');
const addTodoBtn = document.getElementById('addTodoBtn');
const todolist = document.getElementById('todoList');
newTodoInput.value = 'New todolist!';
addTodoBtn.click();
expect(todolist.innerHTML).toBe('<li>New todolist!</li>');
});
이제
todoList.js
에 대한 첫 번째 테스트 케이스를 마칩니다! 논리가 올바른 경우 테스트 확인을 실행해 보겠습니다.이 게시물을 읽어 주셔서 감사합니다. 질문이 있거나 게시물에서 잘못된 개미를 찾으면 저를 위해 토론을 제출하십시오! 😃
한편, 이 게시물은 내 블로그에 동시 게시됩니다: Jest | Use Jest write unit testing for DOM manipulation
Reference
이 문제에 관하여(DOM 조작을 위해 Jest 쓰기 단위 테스트 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ms314006/use-jest-write-unit-testing-for-dom-manipulation-3n6c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)