제가 진행하고 있는 프로젝트가 곧 2년이 됩니다. 우리는 2018년 10월에 작업을 시작했습니다. 이에 대한 단일 테스트는 없습니다. 서로 다른 시간에 적어도 12명 이상의 사람들이 이 프로젝트에 참여했습니다. 현재 우리는 이 애플리케이션 내부의 기능을 연구하는 세 개의 다른 팀이 있습니다. 우리가 가지고 있는 것은 재난의 비결입니다.
Homeday의 다른 프로젝트에서는 단위 테스트를 위해 다음 테스트 스택을 사용합니다.
- 농담 . Jest는 배터리 포함 단위 테스트 솔루션 제공을 목표로 Facebook에서 개발한 테스트 실행기입니다.
-unit -jest Vue CLI 플러그인 . Unit -jest 플러그인은 Vue CLI 에서 제공하는 핵심 플러그인의 일부입니다 . Vue 핵심 팀이 이를 유지 관리합니다.
- Vue 테스트 유틸리티 . Vue Test Utils는 Vue.js의 공식 테스트 라이브러리입니다. Vue 핵심 팀도 이를 유지 관리하며 Vue.js 구성 요소 테스트를 단순화하기 위한 유틸리티 기능 세트입니다. 이는 격리된 방식으로 Vue 구성 요소를 마운트하고 상호 작용하는 몇 가지 방법을 제공합니다.
이는 훌륭한 지원과 문서를 갖춘 놀라운 라이브러리입니다. 우리는 그들과 함께 있어야 합니다. 그렇죠? 글쎄요, 그러기 위해서는 더 나은 것이 없는지 알아보기 위해 다른 것이 무엇인지 살펴봐야 할 것입니다.
테스팅 라이브러리는 지난 몇 년 동안 어느 정도 주목을 받아왔습니다. React 커뮤니티 의 기본 권장 사항이 되었다는 점을 보면 그 관련성이 특히 분명해집니다 .
테스트 라이브러리 의 창시자 는 Javascript 애플리케이션 테스트를 더욱 쉽게 만드는 데 헌신한 엔지니어 인 Kent C. Dodds 입니다 . 그는 JS 애플리케이션 테스트를 이해하는 데 도움이 되는 환상적인 코스를 제공합니다.
Kent는 사용 가능한 네 가지 종류의 자동화 테스트를 언급합니다 .
이제 vue-testing-library 에 대해 이야기해 보겠습니다 . 공식 저장소에 따르면 DOM 테스트 라이브러리 및 @vue/test-utils 위에 구축된 경량 어댑터입니다 . 그리고 공식적인 권장 사항은 jest-dom을 설치하여 사용자 정의 Jest matcher를 사용하는 것 입니다 .
내부적으로 vue-testing-library는 Homeday에서 이미 사용하고 있는 것과 거의 동일한 기술 스택을 유지합니다. 그렇다면 차이점은 무엇입니까? 주요 차이점은 테스트 라이브러리 지침 원칙 에 따라 다릅니다 .
테스트가 소프트웨어 사용 방식과 유사할수록 더 많은 신뢰를 얻을 수 있습니다 .
결과적으로 라이브러리는 웹 페이지가 사용되는 방식과 매우 유사한 테스트를 작성하도록 권장하는 메서드와 유틸리티만 노출합니다.
이제 손을 더럽힐 시간입니다. 기사의 이 부분은 매우 기술적이지만 테스트 환경을 설정하는 데 따른 어려움을 단계별로 설명하려고 노력할 것입니다.
vue-testing-library 와 테스트를 구성하는 데 필요한 나머지 종속성을 설치해 보겠습니다 .
npm i --save-dev @testing-library/vue @testing-library/jest-dom jest vue-jest babel-jest babel-core@bridge eslint-plugin-jest eslint-plugin-testing-library
Photo by Michelle Tresemer on Unsplash
먼저, 이 글은 에 관한 것입니다 vue-testing-library. 이것이 우리가 설치해야 할 첫 번째 종속성입니다. 문서에는 jest-dom. 처음에는 간단하고 순진한 것부터 시작할 수 있습니다.
npm i --save-dev @testing-library/vue @testing-library/jest-dom
npm i --save-dev jest
npm i --save-dev vue-jest
npm i --save-dev babel-jest
jest > 24.0.0 및 babel-jest를 사용하는 경우 babel-core@bridge를 설치하십시오.
이는 우리 프로젝트에도 적용되므로 이제 다음을 설치하겠습니다 babel-core@bridge.
npm i --save-dev babel-core@bridge
module.exports = {
moduleFileExtensions: [
'js',
'vue',
],
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.vue$': 'vue-jest',
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^tests/(.*)$': '<rootDir>/tests/$1',
},
};
엄청난! 이제 첫 번째 테스트를 만들 수 있습니다! 우리는 그것들이 파일 .js과 파일 모두에서 작동하도록 만들 수 있습니다 .vue. 일반 js 함수에 대한 테스트의 최소한의 예를 보여 드리겠습니다.
예! 나는 당신이 그 단위 테스트에 뭔가 문제가 있다는 것을 언뜻 알 수 있다고 확신합니다. ESLint는 Jest 에서 오는 모든 것에 대해 불평합니다 . 글쎄, Jest 와 Testing Library를 위한 ESLint 플러그인을 설치하는 것 외에는 할 수 있는 일이 없습니다 :
npm i --save-dev eslint-plugin-jest eslint-plugin-testing-library
module.exports = {
root: true,
env: {
node: true,
'jest/globals': true,
},
extends: [
'plugin:vue/recommended',
'plugin:testing-library/vue',
],
parserOptions: {
parser: 'babel-eslint',
},
};
import '@testing-library/jest-dom';
import { render } from '@testing-library/vue';
import de from '@/lang/de.json';
import NoDealsOverlay from '@/components/NoDealsOverlay.vue';
describe('components/NoDealsOverlay', () => {
test('Renders the title', () => {
const { queryByText } = render(NoDealsOverlay);
const element = queryByText(de.NO_DEALS.TITLE);
expect(element).toBeInTheDocument();
});
});
Photo by Fernando Brasil on Unsplash
일주일 동안 vue-testing-library를 가지고 플레이한 후 다음 사항이 분명해졌습니다.
그것이 우리를 위해 작동하도록 하려면 다음이 필요합니다.
박수를 보내거나, 댓글을 남기거나, 어디에서나 공유해 보세요. 귀하의 의견에 감사드립니다.
또한 블로그 에서 다른 기사도 확인해 보세요 . 우리는 많은 흥미로운 것들을 다루고 있습니다:
Vue 3는 웹 개발 세계에서 계속 주목을 받고 있습니다. 데이터 반응성에 대한 현대적인 접근 방식, 구성 요소 동작 구성 및 기타 여러 기능을 통해 Vue 3는 이러한 종류의 관심을 가져야 합니다.
소개:용감한 독자 여러분, 지구의 가장 어두운 곳으로 우리를 데려다 줄 여행에 오신 것을 환영합니다. 이 블로그에서 우리는 Mariana Trench의 수수께끼 같은 세계를 탐구하여 숨겨진 비밀을 밝히고 그 표면 아래에 있는 뼛속까지 오싹해지는 진실을 밝혀냅니다.
facebook.com에 요청하면 컴퓨터가 도메인 이름을 조회하여 해당 도메인 이름을 IP 주소로 변환하므로 컴퓨터가 해당 연결을 만들 수 있습니다.
오늘날의 상호 연결된 세계에서 사이버 공격의 위협은 그 어느 때보다 만연해 있습니다. 사이버 범죄자와 국가 행위자는 지속적으로 취약점을 악용하고 귀중한 데이터를 도용하여 모든 규모의 조직에 상당한 위험을 초래합니다.
당신이 자라면 세상은 있는 그대로이고 당신의 삶은 단지 세상 안에서 당신의 삶을 사는 것이며, 결코 당신의 생명을 위험에 빠뜨리지 않고, 정해진 길을 따르고 결국 죽고, 벽을 너무 세게 치세요.하지만 그것은 매우 제한된 삶입니다.