Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何单元测试a';v-show';Vue组件的属性_Javascript_Unit Testing_Testing_Vue.js_Jestjs - Fatal编程技术网

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。这会照顾好一切。