• 编写可被测试的组件

    编写可被测试的组件

    很多组件的渲染输出由它的 props 决定。事实上,如果一个组件的渲染输出完全取决于它的 props,那么它会让测试变得简单,就好像断言不同参数的纯函数的返回值。看下面这个例子:

    1. <template>
    2. <p>{{ msg }}</p>
    3. </template>
    4. <script>
    5. export default {
    6. props: ['msg']
    7. }
    8. </script>

    你可以在不同的 props 中,通过 propsData 选项断言它的渲染输出:

    1. import Vue from 'vue'
    2. import MyComponent from './MyComponent.vue'
    3. // 挂载元素并返回已渲染的文本的工具函数
    4. function getRenderedText (Component, propsData) {
    5. const Constructor = Vue.extend(Component)
    6. const vm = new Constructor({ propsData: propsData }).$mount()
    7. return vm.$el.textContent
    8. }
    9. describe('MyComponent', () => {
    10. it('renders correctly with different props', () => {
    11. expect(getRenderedText(MyComponent, {
    12. msg: 'Hello'
    13. })).toBe('Hello')
    14. expect(getRenderedText(MyComponent, {
    15. msg: 'Bye'
    16. })).toBe('Bye')
    17. })
    18. })