无法在组件测试中使用导入别名

Cannot use import alias in component tests

提问人:Medvedscak 提问时间:10/19/2023 最后编辑:Medvedscak 更新时间:11/13/2023 访问量:61

问:

我正在尝试使用 WebdriverIO、Mocha 和 TypeScript 进行简单的 React 组件测试。我遇到了一个与在 WebdriverIO 中使用导入别名特别相关的问题。

我有简单的模板组件,其中一个使用别名导入另一个组件:

// Comp1.tsx:
import Comp2 from '@app/components/comp2/Comp2';

因此,当我执行仅呈现组件的测试时:

///  <reference types="@wdio/globals/types" />
import React from 'react'
import { render } from '@testing-library/react'
import Comp1 from '../src/components/Comp1'

describe('Test', () => {

  it('should render a component', async () => {
    render(<Comp1 />)
  })

})

我收到错误:

Error:  Test failed due to the following error: [plugin:vite:import-analysis] Failed to resolve import "@app/components/comp2/Comp2" from "src/components/Comp1.tsx". Does the file exist?

组件中的导入是正确的,应用程序可以毫无错误地启动,因此这只是 WebdriverIO 配置中的一个问题。

这是我的:tsconfig.json

"baseUrl": "./",
"paths": {
    "@app/*": ["src/*"]
}

这是我的一部分:wdio.conf.ts

mochaOpts: {
    ui: 'bdd',
    timeout: 6000000,
    // requireModule: ['tsconfig-paths/register']
  },

我找到了这篇关于在 WebdriverIO 中使用别名的文章,我尝试按照此处的建议使用。tsconfig-paths/register

当我取消注释 in 时,出现错误:requireModulewdio.conf.ts

TypeError: self[opt] is not a function\n' +
[0-0]         '    at http://localhost:51604/node_modules/mocha/browser-entry.js:161:18\n' 

注意:即使我不使用任何组件导入,也会发生错误,这只是关于它本身。requireModule: ['tsconfig-paths/register']

该项目包含以下配置:enter image description here

如何在 WebdriverIO 中使用导入别名?不幸的是,他们的文档中没有任何内容。

UPD1:我尝试将别名添加到网络包配置中,如下所示:

resolve: {
  extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'],
  alias: {
    "@app/*": ["src/*"],
  },
},

它没有影响任何事情

TypeScript Mocha.js webdriver-io

评论

0赞 eroironico 10/19/2023
你能分享你的 vite 配置文件吗?
0赞 Medvedscak 10/19/2023
@eroironico项目中没有 vite 配置。如果有意义,我已经用其他可用配置的屏幕截图更新了问题)
0赞 eroironico 10/19/2023
好的,我明白了,对我来说,您似乎在 webpack 配置中缺少导入别名
0赞 Medvedscak 10/20/2023
@eroironico我尝试将别名添加到网络包配置中(更新了初始问题),但没有帮助。我不确定这个 web 包配置在 webdriverio 组件测试中起任何作用。应该吗?
0赞 eroironico 10/20/2023
我对 webpack 没有太多经验,但是我知道没有这些别名的 vite 会抛出该错误,我认为解决方案是相似的。我可以建议的最后一件事是检查格式是否正确,或者是否需要一些路径格式["src/*"]

答:

0赞 Medvedscak 11/13/2023 #1

添加 vite 配置有所帮助。我不确定为什么它没有添加到wdio安装中,或者至少没有在任何地方记录