Javascript 如何单元测试a';v-show';Vue组件的属性
当您有一个基于模型显示的按钮时,如下所示:Javascript 如何单元测试a';v-show';Vue组件的属性,javascript,unit-testing,testing,vue.js,jestjs,Javascript,Unit Testing,Testing,Vue.js,Jestjs,当您有一个基于模型显示的按钮时,如下所示: 添加它 你将如何测试这个?我一辈子都搞不懂 我尝试了以下方法(使用玩笑,但runner/framework不重要): 通过domapi更改输入的值不会通过v-model更新数据,因为它不会触发v-model侦听的输入事件 因此,没有数据更改,因此,v-show仍然是true 解决方案,更改虚拟机上的数据 vm.title = 'fd' 并像上一行一样使用$nextTick,因为只有这样更新才会在DOM中进行通过DOM API更改输入的值不会通过v-
添加它
你将如何测试这个?我一辈子都搞不懂
我尝试了以下方法(使用玩笑,但runner/framework不重要):
通过domapi更改输入的值不会通过v-model更新数据,因为它不会触发v-model侦听的输入事件 因此,没有数据更改,因此,v-show仍然是
true
解决方案,更改虚拟机上的数据
vm.title = 'fd'
并像上一行一样使用$nextTick,因为只有这样更新才会在DOM中进行通过DOM API更改输入的值不会通过v-model更新数据,因为它不会触发v-model侦听的输入事件 因此,没有数据更改,因此,v-show仍然是
true
解决方案,更改虚拟机上的数据
vm.title = 'fd'
像上一行一样使用$nextTick,因为只有这样更新才会出现在DOM中我意外地发现了它。结果表明,测试需要一个done参数 这不起作用(注意done参数和回调) 这确实有效:
it('should hide aap', (done) => {
expect(vm.$el.querySelector('.aap').style.display).toBe('none')
vm.showAap = true
Vue.nextTick(() => {
expect(vm.$el.querySelector('.aap').style.display).toBe('')
done()
})
})
我是偶然发现的。结果表明,测试需要一个done参数 这不起作用(注意done参数和回调) 这确实有效:
it('should hide aap', (done) => {
expect(vm.$el.querySelector('.aap').style.display).toBe('none')
vm.showAap = true
Vue.nextTick(() => {
expect(vm.$el.querySelector('.aap').style.display).toBe('')
done()
})
})
但是我在上面的例子(第14行)中这样做了,但这并没有做这个技巧,但我在上面的例子(第14行)中这样做了,但这并没有做所有这些
nextTick
magic的技巧,你可以简单地做:vm.setData({showApp:true})代码>。这就解决了所有问题。您可以简单地执行:vm.setData({showApp:true}),而不是所有这些nextTick
magic代码>。这会照顾好一切。