测试调用Getters与Mutations的Vuex Action 解决未知action类型报错
你收到的[vuex] unknown action type: toggleTaxOnLine报错原因非常明确:toggleTaxOnLine是你定义的mutation,不是action,而store.dispatch方法只能用来触发action,触发mutation需要用store.commit,你导出的actions对象里根本没有同名的action定义,所以Vuex找不到对应的action触发。
修复方案
1. 修正测试代码的调用逻辑
你已经在actions里封装了updateTaxOnLine组合逻辑,内部会先执行toggle的mutation再触发全量税额更新,直接把测试代码里的dispatch调用改成触发这个action即可:
把测试代码里的
await store.dispatch('toggleTaxOnLine', {lineId: 355});
替换为
await store.dispatch('updateTaxOnLine', {lineId: 355});
2. 修复其他隐藏的代码问题,避免后续报错
- 你的getters中
taxLinesBaseAmount依赖了getters.receiptLines,但你没有定义这个getter,需要在getters中补充:
receiptLines: state => state.receipt.lines,
- mutation都是同步执行的,action里写
await commit(xxx)没有实际作用,可以去掉commit前的await关键字。 - 你计算tax时用了
toFixed(2),得到的是字符串类型,测试断言里的toEqual(6.74)是判断数字相等,会断言失败,可以把断言改成toEqual("6.74"),或者计算tax时转成数字:Number(tax)。
内容的提问来源于stack exchange,提问作者Daniel Butler
相关产品推荐
相关产品推荐

