단위 테스트
Vue CLI에는 즉시 사용 가능한 Jest 또는 Mocha를 사용한 단위 테스트용 옵션이 내장되어 있습니다. 또한 더 자세한 지침과 사용자 정의 설정을 제공하는 공식 Vue Test Utils도 있습니다. ㅋㅋㅋ 어설션 예외 단계 업데이트
간단한 어설션
테스트 가능성을 위해 컴포넌트에서 특별한 작업을 수행할 필요는 없으며 원래 설정을 내보내면 됩니다.
<template> <span>{{ message }}</span> </template> <script> export default { data () { return { message: 'hello!' } }, created () { this.message = 'bye!' } } </script>
그런 다음 Vue에서 컴포넌트를 가져오는 옵션을 사용하면 많은 일반적인 어설션을 사용할 수 있습니다. (여기서는 Jasmine/Jest 스타일 // 导入 Vue.js 和组件,进行测试 import Vue from 'vue' import MyComponent from 'path/to/MyComponent.vue' // 这里是一些 Jasmine 2.0 的测试,你也可以使用你喜欢的任何断言库或测试工具。 describe('MyComponent', () => { // 检查原始组件选项 it('has a created hook', () => { expect(typeof MyComponent.created).toBe('function') }) // 评估原始组件选项中的函数的结果 it('sets the correct default data', () => { expect(typeof MyComponent.data).toBe('function') const defaultData = MyComponent.data() expect(defaultData.message).toBe('hello!') }) // 检查 mount 中的组件实例 it('correctly sets the message when created', () => { const vm = new Vue(MyComponent).$mount() expect(vm.message).toBe('bye!') }) // 创建一个实例并检查渲染输出 it('renders the correct message', () => { const Constructor = Vue.extend(MyComponent) const vm = new Constructor().$mount() expect(vm.$el.textContent).toBe('bye!') }) })
테스트할 수 있는 구성 요소 작성- 많은 구성요소의 렌더링 출력은 소품에 따라 결정됩니다. 실제로 구성 요소의 렌더링된 출력이 해당 prop에 전적으로 의존하는 경우 다양한 매개 변수를 사용하여 순수 함수의 반환 값을 확인하는 것만큼 간단하게 테스트할 수 있습니다. 다음 예를 살펴보세요.
expect
어설션을 예로 사용합니다.): <template> <p>{{ msg }}</p> </template> <script> export default { props: ['msg'] } </script>
propsData
옵션을 통해 다양한 props에서 렌더링 출력을 주장할 수 있습니다.
import Vue from 'vue' import MyComponent from './MyComponent.vue' // 挂载元素并返回已渲染的文本的工具函数 function getRenderedText (Component, propsData) { const Constructor = Vue.extend(Component) const vm = new Constructor({ propsData: propsData }).$mount() return vm.$el.textContent } describe('MyComponent', () => { it('renders correctly with different props', () => { expect(getRenderedText(MyComponent, { msg: 'Hello' })).toBe('Hello') expect(getRenderedText(MyComponent, { msg: 'Bye' })).toBe('Bye') }) })
비동기식 주장 update
Vue의 DOM의 비동기 업데이트
Vue.nextTick
콜백에서 이루어져야 합니다. expect
断言作为示例):
// 在状态更新后检查生成的 HTML it('updates the rendered message when vm.message updates', done => { const vm = new Vue(MyComponent).$mount() vm.message = 'foo' // 在状态改变后和断言 DOM 更新前等待一刻 Vue.nextTick(() => { expect(vm.$el.textContent).toBe('foo') done() }) })
编写可被测试的组件
很多组件的渲染输出由它的 props 决定。事实上,如果一个组件的渲染输出完全取决于它的 props,那么它会让测试变得简单,就好像断言不同参数的纯函数的返回值。看下面这个例子:
你可以在不同的 props 中,通过 propsData
选项断言它的渲染输出:
断言异步更新
由于 Vue 进行 异步更新 DOM 的情况,一些依赖 DOM 更新结果的断言必须在 Vue.nextTick
rrreee
자세한 Vue 단위 테스트를 보려면
로 이동하고 Vue 구성 요소 에 대한 단위 테스트를 수행하세요. 님의 요리책 기사입니다.