我们主要针对Vuex中的mutaions 和actions进行单元测试。
测试 Mutations
Mutations 很容易被测试,因为它们仅仅是一些完全依赖参数的函数。小技巧是,如果你在 store.js
文件中定义了 mutations,并且使用 ES2015 模块功能默认输出,那么你仍然可以给 mutations 取个变量名然后把它输出去:
以下为使用 Mocha + chai 测试 mutation 的例子(实际上你可以用任何你喜欢测试框架)
测试 Actions
Actions 可能会更加棘手一些,因为他们可能要求请求外部API.
当测试actions时,我们通常需要增加mocking服务层——例如,我们可以把API调用抽象成服务,然后我们在测试中模拟这种服务。为了便于解决mock的依赖关系,可以用 Webpack 和 inject-loader 打包测试文件。
异步action测试示例:
测试 Getters
如果你的getters方法很复杂,那么你得测试他们。测试Getter 方法和测试mutations一样非常简单!
测试getter实例:
运行测试
如果你的 mutations 和 actions 已经正确,后面应该在适合的mocking上浏览器测试API的依赖关系。
在Node上运行
创建下面的webpack配置(加上适合.babelrc
):
然后:
在浏览器上运行
-
安装
mocha-loader
-
把上述 webpack 配置中的 entry 改成 ‘mocha!babel!./test.js’
-
用以上配置启动
webpack-dev-server
-
访问
localhost:8080/webpack-dev-server/test-bundle
.
使用Karma + karma-webpack在浏览器中测试
详细的安装咨询见vue-loader documentation.