打破惯性思维,前端工程师的任务不仅仅是和界面打交道
Vuex store天生是脱离组件,独立开来的。它是一个特殊的数据结构,使用特定的方法,更新其中的状态。
测试一个 store 是否有必要
非常有必要交互变得复杂之后,你可以脱离界面对数据的改动做测试,最大限度的保证功能的正常运行。
测试过程
- 检查初始state是否正常
- 触发mutations 或者actions,对于每个mutations 可以写一个case
- 检查修改后的state是否正常
- 测试getters
import store from '@/store/index'
import { testData } from '@/store/templates'
import { testComponents, ComponentData } from '@/store/editor'
import { clone, last } from 'lodash-es'
import { textDefaultProps } from 'lego-bricks'
const cloneComponents = clone(testComponents)
jest.mock('ant-design-vue')
describe('test vuex store', () => {
it('should have three modules', () => {
expect(store.state).toHaveProperty('user')
expect(store.state).toHaveProperty('templates')
expect(store.state).toHaveProperty('editor')
})
describe('test user module', () => {
it('test login mutation', () => {
store.commit('login')
expect(store.state.user.isLogin).toBeTruthy()
})
it('test logout mutation', () => {
store.commit('logout')
expect(store.state.user.isLogin).toBeFalsy()
})
})
describe('test templates module', () => {
it('should have default templates', () => {
expect(store.state.templates.data).toHaveLength(testData.length)
})
it('should get the correct template by Id', () => {
const selectTemplate = store.getters.getTemplateById(1)
expect(selectTemplate.title).toBe('test title 1')
})
})
})