Javascript 不使用单文件组件时,强制在vue 3中重新生成代码
我正在使用VUE3和jest进行单元测试。我的组件位于.vue文件中,js和css位于单独的文件中,并通过src=包含在.vue中:Javascript 不使用单文件组件时,强制在vue 3中重新生成代码,javascript,unit-testing,vue.js,jestjs,Javascript,Unit Testing,Vue.js,Jestjs,我正在使用VUE3和jest进行单元测试。我的组件位于.vue文件中,js和css位于单独的文件中,并通过src=包含在.vue中: 我的图书馆 这在大多数情况下都很有效,例如,npm run service在保存对这些文件的更改时重新加载和刷新所有内容 但是,当我运行npm run test:unit时,测试是针对我的library.js的过时(缓存?)版本运行的。My package.json包含在脚本中:“测试:单元”:“vue cli服务测试:单元”,。我怀疑它是缓存的,因为如果我在
我的图书馆
这在大多数情况下都很有效,例如,npm run service
在保存对这些文件的更改时重新加载和刷新所有内容
但是,当我运行npm run test:unit
时,测试是针对我的library.js的过时(缓存?)版本运行的。My package.json包含在脚本中
:“测试:单元”:“vue cli服务测试:单元”,
。我怀疑它是缓存的,因为如果我在.vue文件中添加注释,它将运行在正确版本的.js上,但是如果我删除注释(使文件与以前的版本匹配),它将再次运行在过时的.js上
可能有趣的是,当我更改.js文件时,运行vue cli服务test:unit--watch
确实会重新运行测试,但它运行的是过时的版本,而不是触发重新运行的新版本
我唯一的解决办法似乎是在.vue文件中附加一个伪注释,这很烦人。或者转到SFC,我觉得这很烦人,因为编辑器对不同部分的支持不如对单独文件的支持
如何让npm/vue cli服务绕过这种明显的缓存?还是有办法清除缓存
下面的脚本将重现该问题。请注意,在底部的输出中,测试运行了三次:
#/bin/bash
如果[-f package.json]]
然后
回显“'cd..”并重新运行此脚本”
echo“您需要位于项目目录的父目录中”
出口1
fi
如果[!-d失败]]
然后
vue创建-p\uuuu默认值\uuuue\uuu 3\uuuuuu失败
cd-utfail
#具体版本基于我最初使用的内容
npm安装vue@3.0.3
npm安装-D@vue/测试-utils@2.0.0-β.11
npm安装-D@vue/compiler-sfc@3.0.3
npm安装-D vue-jest@5.0.0-阿尔法7
npm安装-D@vue/cli插件单元-jest@4.5.9
npm安装-Dtypescript@3.9.7
其他的
cd-utfail
fi
#hack:用test:unit替换默认lint脚本
sed-i-e的/^.*“lint”:*$/“test:unit”:“vue cli服务测试:unit”/“package.json”
cat配置Jest以禁用测试缓存:
//jest.config.js
module.exports={
cache:false,
}
或者将--no cache
标志添加到测试:单元
npm脚本:
//package.json
{
“脚本”:{
“测试:单元”:“vue cli服务测试:单元--无缓存”
}
}
或者使用以下命令从项目的根目录中清除缓存:
npx jest --clearCache
另见