Javascript 使用Jest测试苗条组件,无法递归加载苗条文件

Javascript 使用Jest测试苗条组件,无法递归加载苗条文件,javascript,typescript,jestjs,babeljs,svelte,Javascript,Typescript,Jestjs,Babeljs,Svelte,我正在使用Typescript进行一个轻巧的项目,并希望使用Jest测试UI组件。我无法正确导入我的所有苗条文件,如我的子组件和Jest,只是挂起尝试加载应用程序 svelte组件中存在一些typescript错误,通过打印这些错误,我可以看到实际加载了哪些文件。加载App.svelte后,程序会冻结,不会加载任何子模块 我不确定错误在哪里,因为在此错误之前,我得到了一个类似的导入错误,我通过将配置添加到.babelrc文件并添加预处理器来“解决”这个问题 所有相关文件都在下面,也在 在实际的

我正在使用Typescript进行一个轻巧的项目,并希望使用Jest测试UI组件。我无法正确导入我的所有苗条文件,如我的子组件和Jest,只是挂起尝试加载应用程序

svelte组件中存在一些typescript错误,通过打印这些错误,我可以看到实际加载了哪些文件。加载App.svelte后,程序会冻结,不会加载任何子模块

我不确定错误在哪里,因为在此错误之前,我得到了一个类似的导入错误,我通过将配置添加到.babelrc文件并添加预处理器来“解决”这个问题

所有相关文件都在下面,也在

在实际的测试用例文件中,dropzone.svelte中有一个名为dropzone的数据testid元素

//app.spec.js
从“./src/App.svelte”导入应用程序;
从“@testing library/svelte”导入{render,firevent}”;
描述(“UI负载测试”,()=>{
它(“检查已加载的Dropzone”,()=>{
const{getByText,getByTestId}=render(App);
const dropzone=getByTestId(“dropzone”);
expect(dropzone).toBeDefined();
});
});
//App.svelte
...
//静态苗条组件
从“/components/header.svelte”导入HeaderContent;
从“/components/Loader.svelte”导入加载程序;
从“/components/Footer.svelte”导入页脚;
//动态苗条模
从“/modules/Terminal/Terminal.svelte”导入终端;
从“/modules/Dropzone/Dropzone.svelte”导入Dropzone;
从“/modules/Configure/Configure.svelte”导入配置;
从“/modules/Video/Video.svelte”导入视频;
从“/modules/Progress/Progress.svelte”导入进度;
let loaded=$loadedStore;
...
让fileState=$fileupload;
...
让processedState=$processed;
...
让progressState=$progressStore;
...
让configState=$showConfig;
...
...
//jest.config.js
常数{
预处理:makeTsPreprocess,
createEnv,
readConfigFile,
}=需要(“@pyoner/svelte ts preprocess”);
const env=createEnv();
const compileoptions=readConfigFile(env);
常量预处理选项={
环境,
编译器选项:{
…编译器选项,
AllowOntsEx:是的,
},
};
const preprocess=makeTsPreprocess(预处理选项);
module.exports={
转换:{
“^.+\\.svelte$”:[
“开玩笑变苗条”,
{preprocess:preprocess,debug:true},
],
“^.+\\.ts$”:“ts笑话”,
“^.+\\.js$”:“巴别塔玩笑”,
},
moduleDirectories:[“node_modules”,“src”],
testPathIgnorePatterns:[“节点模块”],
保释金:错,
没错,
transformIgnorePatterns:[“节点模块”],
moduleFileExtensions:[“js”、“svelte”、“ts”],
SetupFileAfterEnv:[
“/jest.setup.js”,
“@testing library/jest dom/extend expect”,
],
};
//babel.config.js
module.exports={
预设:[
[
“@babel/preset env”,
{
目标:{
节点:“当前”,
},
},
],
],
};
/.babelrc
{
“插件”:[
“@babel/plugin语法动态导入”
],
“环境”:{
“测试”:{
“插件”:[“动态导入节点”]
}
}
}

当组件用作依赖项时,您可能会考虑单独测试组件并对其进行模拟。您的意思是在不导入任何其他苗条模块的情况下不单独测试每个模块吗?就像一些无法运行的实际节点模块一样,我会模拟它们,但我希望能够一起测试整个UI/UX。类似于应用程序的后续测试这听起来像是需要e2e测试?有几个框架。看看: