Gibt es eine Möglichkeit, Aliase in Vue-Vorlagen und -Skripten zu verwenden, um die Vue-Jest-Konfiguration abzubilden?
P粉476547076
2023-08-26 17:10:07
<p>Abhängigkeiten: "@vue/cli-plugin-unit-jest": "^4.5.13", "@vue/test-utils": "^1.2.1", "vue - Scherz": "^3.0.7"</p>
<p>Ich habe eine Anwendung, die einen Alias (z. B. „foo“) in vue.config.js festlegt:</p>
<pre class="brush:php;toolbar:false;">module.exports = {
chainWebpack: (config) =>
//Legen Sie den Projektnamen als Alias fest
config.resolve.alias.set('foo', __dirname);
},
};</pre>
<p>Für Importanweisungen und src-Attribute von HTML-Tags...</p>
<p>In main.js:</p>
<pre class="brush:php;toolbar:false;">...
App aus „foo/src/components/core/App“ importieren;
...</pre>
<p>In ../src/core/App/index.vue:</p>
<pre class="lang-html Prettyprint-override"><code><script src="foo/src/components/core/App/script.js"
<style module src="foo/src/components/core/App/style.css"
<template src="foo/src/components/core/App/template.html>
</code></pre>
<p>Ich weiß, dass ich moduleNameMapper in jest.config.js verwenden kann, etwa: </p>
<p><code>'^foo(.*)$': '<rootDir>$1',</code></p>
<p>Dadurch werden jedoch keine Aliase zugeordnet, die im src-Attribut eines HTML-Tags erscheinen. Gibt es eine Möglichkeit, dass Vue-Jest diese Eigenschaftspfade über Konfigurationseinstellungen oder auf andere Weise interpretiert? </p>
<p>Jeder Rat ist uns sehr willkommen. </p>
SFC中的URL解析
vue-jest
无法解析SFC中顶级块标签的src
URL,因此您需要在src/components/core/App/index.vue
中使用未别名的相对路径:模板内容中的URL解析
vue-jest
使用@vue/component-compiler-utils
编译模板,但URL解析需要transformAssetUrls
选项。vue-jest
3.x不支持向@vue/component-compiler-utils
传递选项,但在4.0.0-rc.1中通过templateCompiler.transformAssetUrls
配置实现。即使启用了URL解析,Vue CLI配置
jest
以返回空字符串以获取require
的媒体,包括图像。如果您的测试需要与正常解析的URL一起在生产环境中工作,您将需要一个模仿url-loader
的Jest转换器。Vue CLI配置加载器以如果大于4KB,则返回解析的文件名; 否则返回base64数据URL。要启用URL解析:
升级到
vue-jest
4:为自定义的
my-jest-url-loader
创建以下文件,稍后将在下面使用:为了避免意外覆盖Vue CLI的默认Jest预设,使用合并工具(例如
lodash.merge
)在jest.config.js
中插入自定义配置。在Jest全局中添加一个
vue-jest
配置,设置templateCompiler.transformAssetUrls
。修改合并预设的
transform
属性,使用我们的my-jest-url-loader
转换器来处理图像。这需要从默认Jest预设中删除其他图像转换器,以避免冲突。GitHub演示