Adakah terdapat cara untuk menggunakan alias dalam templat dan skrip Vue untuk memetakan konfigurasi vue-jest?
P粉476547076
2023-08-26 17:10:07
<p>Pergantungan: "@vue/cli-plugin-unit-jest": "^4.5.13", "@vue/test-utils": "^1.2.1", "vue - gurauan": "^3.0.7"</p>
<p>Saya mempunyai aplikasi yang menetapkan alias (sebut "foo") dalam vue.config.js:</p>
<pre class="brush:php;toolbar:false;">module.exports = {
chainWebpack: (config) =>
//Tetapkan nama projek sebagai alias
config.resolve.alias.set('foo', __dirname);
},
};</pre>
<p>Untuk penyataan import dan atribut src tag HTML...</p>
<p>Dalam main.js:</p>
<pre class="brush:php;toolbar:false;">...
import Apl daripada 'foo/src/components/core/App';
...</pra>
<p>Dalam ../src/core/App/index.vue:</p>
<pre class="lang-html prettyprint-override"><code><script src="foo/src/components/core/App/script.js"
<modul gaya src="foo/src/components/core/App/style.css"
<template src="foo/src/components/core/App/template.html"
</code></pre>
<p>Saya tahu saya boleh menggunakan moduleNameMapper dalam jest.config.js, sesuatu seperti: </p>
<p><kod>'^foo(.*)$': '<rootDir>$1',</code></p>
<p>Walau bagaimanapun, ini tidak memetakan alias yang muncul dalam atribut src teg HTML. Adakah terdapat cara untuk membolehkan vue-jest mentafsir laluan sifat ini melalui tetapan konfigurasi atau cara lain? </p>
<p>Sebarang nasihat amat dihargai. </p>
Penghuraian URL dalam SFC
Menggunakan laluan relatif tanpa nama dalamvue-jest
无法解析SFC中顶级块标签的src
URL,因此您需要在src/components/core/App/index.vue
:Penghuraian URL dalam kandungan templat
vue-jest
使用@vue/component-compiler-utils
编译模板,但URL解析需要transformAssetUrls
选项。vue-jest
3.x不支持向@vue/component-compiler-utils
传递选项,但在4.0.0-rc.1中通过templateCompiler.transformAssetUrls
Konfigurasipelaksanaan.Walaupun penghuraian URL didayakan, Vue CLI mengkonfigurasi
Untuk mendayakan penghuraian URL:jest
kepada Mengembalikan rentetan kosong untuk mendapatkan mediarequire
, termasuk imejjest
以返回空字符串以获取require
的媒体,包括图像。如果您的测试需要与正常解析的URL一起在生产环境中工作,您将需要一个模仿url-loader
. Jika ujian anda perlu berfungsi dalam pengeluaran dengan URL yang biasanya diselesaikan, anda memerlukan jest converter untuk pemuat url. Pemuat konfigurasi Vue CLI mengembalikan nama fail yang dihuraikan jika lebih besar daripada 4KB sebaliknya mengembalikan URL data base64.Naik taraf kepada- 4:
Buat fail berikut untuk tersuai anda - yang akan digunakan kemudian di bawah:
Untuk mengelak menimpa pratetap Jest lalai Vue CLI secara tidak sengaja, gunakan alat cantum (seperti -
Tambahkan konfigurasi - dalam
Ubah suai atribut - kami untuk memproses imej. Ini memerlukan mengalih keluar penukar imej lain daripada pratetap Jest lalai untuk mengelakkan konflik.
GitHub Demovue-jest
my-jest-url-loader
lodash.merge
) untuk memasukkan konfigurasi tersuai dalam
jest.config.js
.lodash.merge
)在jest.config.js
Jest global dan tetapkan
templateCompiler.transformAssetUrls code >
.vue-jest
配置,设置templateCompiler.transformAssetUrls
transform
pratetap gabungan dan gunakan penukartransform
属性,使用我们的my-jest-url-loader