在调用 mounted 之前如何使用 Vue-Test-Utils 在组件中设置数据值?
How do you set the data values in a component with Vue-Test-Utils before mounted is called?
我正在使用 Jest 和 Vue-Test-Utils。我一直在使用的代码如下所示:
beforeEach(() => {
wrapper = shallow(GridContainer, {
data: {
pageSize: count
},
propsData: {
userId,
managerId
}
})
})
在这个例子中,我想在调用生命周期安装之前设置pageSize值。上面代码的问题是我在测试 运行:
时开始收到以下警告
[Vue warn]: Do not use built-in or reserved HTML elements as component id: data
当我删除上面的数据 属性 时,警告消失了。
我设置的数据是否正确?如果是这样,我应该如何处理警告?
我应该用其他方式设置数据吗?
请这样尝试:
beforeEach(() => {
wrapper = shallow(GridContainer, {
propsData: {
userId,
managerId
}
})
wrapper.setData({pageSize: count})
})
参考:setData
https://vue-test-utils.vuejs.org/en/api/wrapper/setData.html
我的解决方案是在初始化中将数据定义为函数:
beforeEach(() => {
wrapper = shallow(GridContainer, {
propsData: {
userId,
managerId
},
data: function() {
return {
pageSize: count
}
}
})
})
就我而言,yukihirop 使用 setData()
提供的解决方案无效。
我的组件正在从 window 对象访问数据,该对象在我的测试环境中未定义。此数据正在模板中输出。这导致在安装后立即抛出异常 - 在我有机会调用 setData()
.
之前
Nicolas Betsworth的解决方案是正确的,但是,也可以将setData与Vue.nextTick()一起使用。 Vue.nextTick() 将重新渲染组件。
beforeEach(() => {
wrapper = shallow(GridContainer, {
propsData: {
userId,
managerId
}
})
wrapper.setData({pageSize: count})
Vue.nextTick()
})
我正在使用 Jest 和 Vue-Test-Utils。我一直在使用的代码如下所示:
beforeEach(() => {
wrapper = shallow(GridContainer, {
data: {
pageSize: count
},
propsData: {
userId,
managerId
}
})
})
在这个例子中,我想在调用生命周期安装之前设置pageSize值。上面代码的问题是我在测试 运行:
时开始收到以下警告[Vue warn]: Do not use built-in or reserved HTML elements as component id: data
当我删除上面的数据 属性 时,警告消失了。
我设置的数据是否正确?如果是这样,我应该如何处理警告?
我应该用其他方式设置数据吗?
请这样尝试:
beforeEach(() => {
wrapper = shallow(GridContainer, {
propsData: {
userId,
managerId
}
})
wrapper.setData({pageSize: count})
})
参考:setData https://vue-test-utils.vuejs.org/en/api/wrapper/setData.html
我的解决方案是在初始化中将数据定义为函数:
beforeEach(() => {
wrapper = shallow(GridContainer, {
propsData: {
userId,
managerId
},
data: function() {
return {
pageSize: count
}
}
})
})
就我而言,yukihirop 使用 setData()
提供的解决方案无效。
我的组件正在从 window 对象访问数据,该对象在我的测试环境中未定义。此数据正在模板中输出。这导致在安装后立即抛出异常 - 在我有机会调用 setData()
.
Nicolas Betsworth的解决方案是正确的,但是,也可以将setData与Vue.nextTick()一起使用。 Vue.nextTick() 将重新渲染组件。
beforeEach(() => {
wrapper = shallow(GridContainer, {
propsData: {
userId,
managerId
}
})
wrapper.setData({pageSize: count})
Vue.nextTick()
})