Vue.js 使用Jest测试Vue时访问变量

Vue.js 使用Jest测试Vue时访问变量,vue.js,testing,jestjs,Vue.js,Testing,Jestjs,我在Vue.js web应用程序中使用以下结构。我现在正在尝试对它进行测试。但是当尝试测试exampleOfFunction时,它会说this.exampleOfData2是未定义的 *一些HTML* *一些进口商品* 导出默认值{ 数据(){ 返回{ 数据1的示例:[], 数据示例2:100 }, 方法:{ 函数的示例:函数(){ if(this.exampleOfData2===100) { 返回false; } 返回true; }, 创建(){ }, 安装的(){ } } 在我的测试文

我在Vue.js web应用程序中使用以下结构。我现在正在尝试对它进行测试。但是当尝试测试
exampleOfFunction
时,它会说
this.exampleOfData2
未定义的


*一些HTML*
*一些进口商品*
导出默认值{
数据(){
返回{
数据1的示例:[],
数据示例2:100
},
方法:{
函数的示例:函数(){
if(this.exampleOfData2===100)
{
返回false;
}
返回true;
},
创建(){
},
安装的(){
}
}

在我的测试文件中,我尝试访问上面的代码,并成功地使用
console.log(FileToTest.data());
我可以看到数据的值,并且可以使用
FileToTest.methods.exampleoff()访问函数;
但是当我调用函数时,它会说
这个。数据的示例2
未定义的

看起来您在测试中使用的是组件选项定义,而不是组件实例

您应该通过创建包装器,然后可以通过以下方式访问组件方法:

从'@vue/test-utils'导入{shallowMount}
从“@/components/FileToTest.vue”导入FileToTest
描述('FileToTest',()=>{
它('Exampleoff函数默认返回false',()=>{
const wrapper=shallowMount(FileToTest)
expect(wrapper.vm.exampleoff函数()).toBe(false)
})
它('当数据不是100'时,exampleoff函数返回true',()=>{
const wrapper=shallowMount(FileToTest)
wrapper.setData({ExampleOfData 2:0})
expect(wrapper.vm.exampleoff函数()).toBe(true)
})
})

什么是
FileToTest
?如果这是您导入的组件定义,那么您的测试方法是错误的。Vue将方法绑定到实例,而您不这样做,那么不符合实际行为的测试没有太大价值。