Javascript 不使用单文件组件时,强制在vue 3中重新生成代码

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服务测试:单元”,。我怀疑它是缓存的,因为如果我在

我正在使用VUE3和jest进行单元测试。我的组件位于.vue文件中,js和css位于单独的文件中,并通过src=包含在.vue中:


我的图书馆
这在大多数情况下都很有效,例如,
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服务绕过这种明显的缓存?还是有办法清除缓存

下面的脚本将重现该问题。请注意,在底部的输出中,测试运行了三次:

  • 在第一次运行时,输出应包括“hello created 1”
  • 然后编辑.js文件以更改该字符串,以便在第二次运行时,输出应为“hello created 2”。但是,当我运行这个脚本时,它在两个测试运行中都提供了“hello created 1”
  • 然后编辑.vue文件以更改虚拟注释。在第三次运行时,输出是预期的“hello created 2”
  • #/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
    
    另见