Web前端
vue单元测试vuex,mutation,尤其是actions、getters怎么测?让你像使用vuex一样测试vuex
vuex怎么单元测试,我们只能通过检验state的值是否符合预期来测试,所以,正常的套路应该是测试mutation,然后看看对应的state是否发生了符合预期的变化。没错。 mutation 怎么测 比如这种 SET_LIST(state, payload) { state.listData = payload; }, // test.spec.js describe("mutations", async () => { it("mutations SET_LIST", async function() { SET_LIST(state, [123]); expect(state.listData).eql([123]); }); } 每个mutation就是一个方法,我们直接调用 SET_LIST(state, payload)检验对应的state就可以完成对SET_LIST的测试了。这当然简单了,毕竟mutation里面就这两个参数 action呢 action里面一般伴有发送请求,然后根据请求结果,触发对应的mutation,有时我们还会在action里面触发另外的action等较复杂的情况 下面列举了我们不愿意测action的原因: action可能进行接口调用 action可能发送当前module或其他module的state或getters action可能发送当前module或其他module的action 上述情况可能会组合出现 在测试这样的action时是不是会吐槽,action怎么会写这么复杂。哈哈,业务需要啊。 action里面也是两个参数,只是第一个参数context是一个对象 除了state、rootState、getters、rootGetters这几个对象用来获取值以外,里面还有commit、dispatch方法。 比如下面的两个action就比较复杂,还有“嵌套”关系 async _getDetail({ rootState, dispatch }, params) { const Read more…