解析 testcafe 打字稿测试中的模块

Posted

技术标签:

【中文标题】解析 testcafe 打字稿测试中的模块【英文标题】:resolve modules in testcafe typescript tests 【发布时间】:2022-01-07 16:25:38 【问题描述】:

我在 testcafe(1.17.1) 测试中遇到了模块解析问题。 我有一个测试

//test.e2e.ts in <root>/tests folder
import MyComponent from '../src/MyComponent';
...
...
fixture('Custom domain tests');

test('test 1', async () => 
  ...
  ...
);

&lt;root&gt;/src/MyComponent.tsx 看起来像这样

//MyComponent.tsx in <root>/src folder
import React,  FunctionComponent  from 'react';
import styles from '../scss/MyComponent.module.scss';

export const MyComponent: FunctionComponent = () => 
  ...
  ...

当我运行testcafe ./tests/test.e2e.ts 时,总是出现错误 Error: TypeScript compilation failed. Cannot find module '../scss/MyComponent.module.scss' or its corresponding type declarations. 我的testcafe tsconfig 指定了路径配置,&lt;root&gt;/scss-module-for-tests.ts 只是导出一个空字符串

// .testcaferc.json in <root>/

  "compilerOptions": 
    "typescript": 
      "options": 
        "esModuleInterop": true,
        "baseUrl": ".",
        "paths": 
          "../scss/MyComponent.module.scss": ["scss-module-for-tests.ts"],
          "*.scss": ["scss-module-for-tests.ts"]
        
      
    
  

然而,打字稿路径配置似乎不解析相对路径也不接受正则表达式,但我的项目有很多 ../scss/*module.scss 导入。有没有办法直接为testcafe解析scss文件?

提前致谢!

2021 年 12 月 2 日更新 我尝试根据这个doc为testcafe添加编译器,我在根文件夹中放了一个.testcaferc.json

//.testcaferc.json at <root>

  "compilerOptions": 
    "typescript": 
      "options": 
        "esModuleInterop": "true"
      
    
  

但似乎 esModuleInterop=true 配置没有到达 testcafe。

2021 年 12 月 13 日更新: 不容易正确配置,我去掉了测试代码中的*.scss文件引用。问题解决了。

【问题讨论】:

【参考方案1】:

您的 TestCafe 测试代码似乎引用了您的测试应用程序代码。但是,TestCafe 测试不需要测试应用程序代码。事实上,TestCafe 测试和应用程序的代码可以分为两个独立的项目。请尝试将您的 Web 应用程序代码和您的 TestCafe 测试代码分开。

【讨论】:

谢谢@aleks-pro,真的,我的测试代码是指应用程序代码,我会拆分和重构它们。不过这样的应用代码参考太多了,希望我可以先配置一下testcafe,让它工作起来。 尝试为 typescript 编译器选项添加 .testcaferc.json,但 testcafe 似乎忽略了我的配置 没有样本很难找到问题的原因。您能否分享一个我们可以重现该问题的项目示例?您可以从中删除所有敏感数据。

以上是关于解析 testcafe 打字稿测试中的模块的主要内容,如果未能解决你的问题,请参考以下文章

打字稿验证道具中的 JSON 解析

打字稿中的模块关键字是啥意思?

打字稿无法解析导入中的非相对路径

使用带有打字稿的 eslint - 无法解析模块的路径

Babel 模块解析器无法按预期工作(节点 + 打字稿)

我无法导入已发布的打字稿库,出现以下错误:“找不到模块:无法解析 'tqt' in ...”