Mac + Vue + Vue Test Utils + Vuetify 개발 환경 구축
14915 단어 Vue.jsVuetifymacOSCatalina
nodebrew 설치
$ brew install nodebrew
$ nodebrew help|head -n1
nodebrew 1.0.1
$ nodebrew setup
Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew
========================================
Export a path to nodebrew:
export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ nodebrew install-binary stable
$ nodebrew use stable
$ node -v
v12.4.0
$ nodebrew use v10.16.0
$ node -v
v10.16.0
$ npm update -g npm
$ npm -v
6.14.3
yarn 설치
$ brew install yarn
$ yarn --version
1.17.0
@vue/cli 설치
$ yarn global add @vue/cli
$ yarn global upgrade --latest @vue/cli
@vue/cli 4.2.3
$ yarn info vue | grep version:
version: '2.6.11',
Vue 설치
$ mkdir -p ~/Developer/sample-vue && cd ~/Developer/sample-vue
$ vue create sample-app
$ yarn serve
↓ htp://127.0.0.1:8080/
Vue 설치 후 트리
~/Developer/sample-vue/sample-app
├── README.md
├── babel.config.js
├── node_modules
├── package.json
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── App.vue
│ ├── assets
│ │ └── logo.png
│ ├── components
│ │ └── HelloWorld.vue
│ └── main.js
└── yarn.lock
$ yarn serve
Vue Test Utils 설치
$ cd ~/Developer/sample-vue/sample-app
$ vue add --dev @vue/test-utils @vue/cli-plugin-unit-jest
Vue Test Utils 설치 후 트리
~/Developer/sample-vue/sample-app
├── README.md
├── babel.config.js
├── jest.config.js ■ 追加
├── node_modules
├── package.json
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── App.vue
│ ├── assets
│ │ └── logo.png
│ ├── components
│ │ └── HelloWorld.vue
│ └── main.js
├── tests ■ 追加
│ └── unit ■ 追加
│ └── example.spec.js ■ 追加
└── yarn.lock
TEST 실행 결과
$ cd ~/Developer/sample-vue/sample-app
$ yarn test:unit tests/unit/example.spec.js
yarn run v1.22.4
$ vue-cli-service test:unit tests/unit/example.spec.js
PASS tests/unit/example.spec.js
HelloWorld.vue
✓ renders props.msg when passed (26ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 2.172s
Ran all test suites matching /tests\/unit\/example.spec.js/i.
✨ Done in 3.99s.
Vuetify 설치
$ cd ~/Developer/sample-vue/sample-app
$ vue add vuetify
$ yarn info vuetify | grep version:
version: '2.2.18',
$ yarn serve
↓ htp://127.0.0.1:8080/
~/Developer/sample-vue/sample-app
├── README.md
├── babel.config.js
├── jest.config.js
├── node_modules
├── package.json
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── App.vue
│ ├── assets
│ │ ├── logo.png
│ │ └── logo.svg ■ 追加
│ ├── components
│ │ └── HelloWorld.vue
│ ├── main.js
│ └── plugins ■ 追加
│ └── vuetify.js ■ 追加
├── tests
│ └── unit
│ └── example.spec.js
├── vue.config.js
└── yarn.lock
TEST
vi ~/Developer/sample-vue/sample-app/src/components/HelloWorld.vue
~/Developer/sample-vue/sample-app/src/components/HelloWorld.vue
<template>
<div>
<p id="htmlMessage">{{ message }}</p>
<v-btn @click="onClick" small>CountUp</v-btn>
<p id="count">{{ count }}</p>
</div>
</template>
<script>
export default {
data: () => ({
message: 'HelloWorld',
count: 0
}),
methods: {
onClick () {
this.count++
}
}
}
</script>
~/Developer/sample-vue/sample-app/tests/unit/example.spec.js
~/Developer/sample-vue/sample-app/tests/unit/example.spec.js
import Vue from 'vue'
import Vuetify from 'vuetify'
import { createLocalVue, mount, shallowMount } from '@vue/test-utils'
import HelloWorld from '@/components/HelloWorld.vue'
Vue.use(Vuetify)
const localVue = createLocalVue()
describe('CustomCard.vue', () => {
let vuetify
let wrapper
beforeEach(() => {
vuetify = new Vuetify()
wrapper = mount(HelloWorld, {
localVue,
vuetify,
})
})
it('renders a vue instance', () => {
expect(wrapper.isVueInstance()).toBe(true);
})
it('Checks the message of vm', () => {
let vmMessage = wrapper.vm.message
expect(vmMessage).toMatch('HelloWorld')
})
it('Checks the message of html', () => {
let htmlMessage = wrapper.find('#htmlMessage').text()
console.log(htmlMessage)
expect(htmlMessage).toMatch('HelloWorld')
})
})
단위 테스트
$ cd ~/Developer/sample-vue/sample-app
$ yarn test:unit tests/unit/example.spec.js
yarn run v1.22.4
$ vue-cli-service test:unit tests/unit/example.spec.js
PASS tests/unit/example.spec.js
CustomCard.vue
✓ renders a vue instance (81ms)
✓ Checks the message of vm (27ms)
✓ Checks the message of html (31ms)
console.log tests/unit/example.spec.js:32
HelloWorld
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 1.531s, estimated 2s
Ran all test suites matching /tests\/unit\/example.spec.js/i.
✨ Done in 2.79s.
Vue로 unit 테스트를 하기 위한 기초 기초 메모
함수 이름
설명
이용 케이스
mount
하위 구성 요소에 실제 구성 요소 사용
컴포넌트끼리 협력이 필요한 경우
shallowMount
하위 구성 요소에 더미 구성 요소 사용
구성 요소 단위로 테스트
Matcher
설명
사용 예
.toBe(value)
result와 actual 등가인 것의 비교
expect(4).toBe(4)
.toEqual(value)
result와 actual의 연관 배열의 내용이 일치하는지 비교
expect({two: 2,one: 1}).toEqual({one: 1,two: 2})
.toMatch(regexp)
result에 대한 정규식으로 비교
expect ( 'abcdefg'). toMatch (/abc/)
.toBeGreaterThan(number)
결과가 actual보다 크다.
expect(11).toBeGreaterThan(10)
.toBeGreaterThanOrEqual(number)
결과가 actual 이상
expect(10).toBeGreaterThanOrEqual(10)
.toBeLessThan(number)
결과가 actual보다 작음
expect(9).toBeLessThan(10)
.toBeLessThanOrEqual(number)
결과가 actual 이하
expect(10).toBeLessThanOrEqual(10)
.toBeCloseTo(number, 자리수)
결과의 특정 소수 자릿수까지 actual과 일치하는지 비교 (js는 소수점 계산으로 오차가 나오기 때문에)
expect(0.1 + 0.2).toBeCloseTo(0.35, 1)
.toHaveLength(number)
result의 length와 actual과 일치하는지 비교
expect([1,2]).toHaveLength(2)
.toBeInstanceOf(class)
result가 actual과 같은 클래스의 인스턴스화 또는 비교
class Klass {}
expect (new Klass ()). toBeInstanceOf (Klass)
.toHaveProperty(value)
결과의 특정 키와 일치합니까?
expect({a:false,b:{c:1,d:'A'}}).toHaveProperty('a')//key a가 있는지
expect({a:false,b:{c:1,d:'A'}}).toHaveProperty('a',false)//key a는 false
expect({a:false,b:{c:1,d:'A'}}).toHaveProperty('b.c',1)
.toMatchObject(value)
결과의 일부와 actual이 일치하는지
expect({a:1,b:2}).toMatchObject({a: 1})
.toContain(value)
결과에 actual이 포함되어 있습니까?
expect([1,2]).toContain(2)
expect ( 'ABCDEFG').toContain('EFG')
.toBeNull()
result가 Null인지 여부
expect (null). toBeNull ()
.toBeUndefined()
결과가 Undefined인지 여부
expect().toBeUndefined()
참고
설치 — Vue.js
htps : // jp. 아 js. rg/v2/구이데/인 s타치온. HTML
빠른 시작 — Vuetify.js
htps : // ゔ에치 fyjs. 코 m / 자 / 껄껄 g-s r d / 구이 ck-s rt /
Guides | Vue Test Utils
h tps : // ㅔ 에- st- 중 ls. 아 js. rg / gue s / # 갓찐 g rs d
@vue/cli-plugin-unit-jest
htps : // 기주 b. 이 m/ゔ에 js/ゔ에-cぃ/t레에/에서 v/파카게 s/%40ゔ에/cぃ-pㅅㅅㅜㅜㅜ
Expect · Jest
htps : // 지 stjs. 이오/도 cs/엔/에 x페ct
단위 테스트 — Vuetify.js
htps : // ゔ에치 fyjs. 코 m / 그럼 / 껄껄 g-s r d / 우니 t- s s g /
Reference
이 문제에 관하여(Mac + Vue + Vue Test Utils + Vuetify 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mykysyk@github/items/a1a308f30fee64cc9bfc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)