详解Vue单元测试case写法
书接上文,介绍了vue单元测试环境搭建及查看源文件的测试覆盖覆盖率。今天来说一下vue单元测试思路和case的写法。测试框架使用jasmine,。 代码地址: 测试关注点对于vue组件,单元测试测试主要关注以下几点:
组件加载后的状态要测试组件加载后的状态,首先我们需要将vue组件生成实例。并检测挂载后实例的数据状态。下面是个示例: 我们来看下 {{title}}组件加载后title的值应该变成'Hello world',所以我们这样来写测试代码 // 引用要测试的组件
import app from '../../src/app.vue'; // 描述要测试的内容 // 描述要测试的最小单元 // 这里将app生成vue实例,并使用 $mount() 模拟挂载状态 // 断言组件的title是否变为了'Hello world' 执行 测试组件里面的方法我们知道vue将data和methods都挂在了vue实例的根节点下,所以测试vue组件中的方法也和上面测试状态一样,直接调用vm的方法就行了。我们来测试以下setMessage方法: // 引用要测试的组件
import app from '../../src/app.vue'; // 描述要测试的内容 // 描述要测试的最小单元 // 这里将app生成vue实例,并使用 $mount() 模拟挂载状态 // 执行setMessage方法 // 断言组件的message是否变为了'你好世界' 执行karma start,就会看到测试成功。如果刚才没有关闭karma的话,在watch模式下,测试会自动进行。 怎么样?有没有感觉vue单元测试非常简单,赶紧做起来吧。 filter测试filter的测试就更简单了。filter就是纯函数,有固定的输入输出,我们只需要执行函数看预期结果就好了。我们为组件添加一个转换大写的filter:
...
{{title | upperCase}}... 测试这个filter // 描述要测试的内容
describe('test app.vue',() => { it('upperCase过滤器能把app转换为APP',() => { // vue 组件export出来的是个对象,我们直接用这个对象的属性和方发就能调用到要测试的filter // 断言组件的appStr是为'APP' props测试props依赖父组件,这个怎么测试呢。我们来看下 使用Vue.extend()将组件挂载Vue构造器上,用propsData加入props数据,之后new一个Vue实例,这样就生成了一个独立的带props的vm和前面的实例一样,可以进行各种测试。 我们的child组件: {{message}}
测试child组件 // 引用要测试的组件
import child from '../../src/components/child.vue'; /**
// 描述要测试的内容 // 描述要测试的最小单元 // 断言组件的child组件的props是否生效 是不是so easy. 异步更新DOM的情况异步更新DOM的情况,参考 使用Vue.nextTick来查看异步数据更新后dom是否变化 // 引用要测试的组件
import app from '../../src/app.vue'; // 描述要测试的内容 // 异步数据更新 // 这里将app生成vue实例,并使用 $mount() 模拟挂载状态 // 挂载后改变title Vue.nextTick(() => { 以上就是对vue组件单元测试的用例编写的介绍,例子举得比较简单,主要是介绍各种情况的测试方法。 相关链接以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |