Existe-t-il un moyen d'utiliser des alias dans les modèles et scripts Vue pour mapper la configuration de vue-jest ?
P粉476547076
2023-08-26 17:10:07
<p>Dépendances : "@vue/cli-plugin-unit-jest" : "^4.5.13", "@vue/test-utils" : "^1.2.1", "vue - plaisanterie" : "^3.0.7"&Lt ;/p> ;
<p>J'ai une application qui définit un alias (disons "foo") dans vue.config.js :</p>
<pre class="brush:php;toolbar:false;">module.exports = {
chainWebpack : (config) =>
//Définit le nom du projet comme alias
config.resolve.alias.set('foo', __dirname);
},
};</pré>
<p>Pour les instructions d'importation et les attributs src des balises HTML...</p>
<p>Dans main.js :</p>
<pre class="brush:php;toolbar:false;">...
importer l'application depuis 'foo/src/components/core/App' ;
...</pré>
<p>Dans ../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>Je sais que je peux utiliser moduleNameMapper dans jest.config.js, quelque chose comme : </p>
<p><code>'^foo(.*)$' : '<rootDir>$1',</code></p>
<p>Cependant, cela ne mappe pas les alias qui apparaissent dans l'attribut src d'une balise HTML. Existe-t-il un moyen pour que vue-jest interprète ces chemins de propriété via les paramètres de configuration ou d'autres moyens ? </p>
<p>Tout conseil est grandement apprécié. </p>
Analyse d'URL dans SFC
Utilisation de chemins relatifs sans alias dansvue-jest
无法解析SFC中顶级块标签的src
URL,因此您需要在src/components/core/App/index.vue
:Analyse d'URL dans le contenu du modèle
vue-jest
使用@vue/component-compiler-utils
编译模板,但URL解析需要transformAssetUrls
选项。vue-jest
3.x不支持向@vue/component-compiler-utils
传递选项,但在4.0.0-rc.1中通过templateCompiler.transformAssetUrls
Configurationimplémentation.Même avec l'analyse d'URL activée, Vue CLI configure
Pour activer l'analyse d'URL :jest
sur Renvoie une chaîne vide pour obtenir les médias derequire
, y compris les imagesjest
以返回空字符串以获取require
的媒体,包括图像。如果您的测试需要与正常解析的URL一起在生产环境中工作,您将需要一个模仿url-loader
. Si vos tests doivent fonctionner en production avec des URL normalement résolues, vous aurez besoin d'un convertisseur Jest simulé pour url-loader. Le chargeur de configuration Vue CLI renvoie le nom de fichier analysé s'il est supérieur à 4 Ko ; sinon, il renvoie l'URL des données base64.Mise à niveau vers- 4 :
Créez le fichier suivant pour votre personnalisation - qui sera utilisé plus tard ci-dessous :
Pour éviter d'écraser accidentellement les préréglages Jest par défaut de Vue CLI, utilisez un outil de fusion (tel que -
Ajoutez une - configuration dans
Modifiez l'attribut - convertisseur pour traiter l'image. Cela nécessite de supprimer les autres convertisseurs d'images du préréglage Jest par défaut pour éviter les conflits.
Démo GitHubvue-jest
my-jest-url-loader
lodash.merge
) pour insérer une configuration personnalisée dans
jest.config.js
.lodash.merge
)在jest.config.js
Jest global et définissez
templateCompiler.transformAssetUrls code >
.vue-jest
配置,设置templateCompiler.transformAssetUrls
transform
du préréglage de fusion et utilisez notretransform
属性,使用我们的my-jest-url-loader