首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法运行组件的Jest测试(加载html文件失败)

无法运行组件的Jest测试(加载html文件失败)
EN

Stack Overflow用户
提问于 2021-11-06 10:48:24
回答 1查看 539关注 0票数 4

我无法在组件上运行Jest测试,因为它无法加载html文件。我知道这个错误:

代码语言:javascript
复制
Error: Error: connect ECONNREFUSED 127.0.0.1:80

其次是:

代码语言:javascript
复制
Unhandled Promise rejection: Failed to load landing.component.html

运行非组件测试是可以的。

这是我的jest.config.js

代码语言:javascript
复制
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
  preset: "jest-preset-angular",
  testEnvironment: "jsdom",
  setupFilesAfterEnv: ["<rootDir>/setup-jest.ts"],
  globals: {
    "ts-jest": {
      tsconfig: "<rootDir>/tsconfig.spec.json",
      stringifyContentPathRegex: "\\.(html|svg)$",
    },
  },
  snapshotSerializers: [
    "jest-preset-angular/build/serializers/html-comment",
    "jest-preset-angular/build/serializers/ng-snapshot",
    "jest-preset-angular/build/serializers/no-ng-attributes",
  ],
  moduleDirectories: ["node_modules", "."],
  testMatch: ["**/+(*.)+(spec|test).+(ts|js)?(x)"],
  transform: {
    "^.+\\.(ts|js|html)$": "ts-jest",
  },
  resolver: "@nrwl/jest/plugins/resolver",
  moduleFileExtensions: ["ts", "js", "html"],
  coverageReporters: ["html"],
};

我的setup-jest.ts

代码语言:javascript
复制
import 'jest-preset-angular/setup-jest';

还有我的tsconfig.spec.json

代码语言:javascript
复制
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "module": "commonjs",
    "types": ["jest", "node"],
    "allowJs": true,
    "esModuleInterop": true,
    "emitDecoratorMetadata": true
  },
  "files": ["setup-jest.ts"],
  "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
}

来自angular.json的Jest部分

代码语言:javascript
复制
"test": {
  "builder": "@nrwl/jest:jest",
  "options": {
    "jestConfig": "jest.config.js",
    "passWithNoTests": true
  }
}

我使用角12.2.7,Jest 27.2.4,jest-预设-角10.0.1和ts-jest 27.0.5。

EN

回答 1

Stack Overflow用户

发布于 2022-02-20 03:07:59

This answer帮助我解决了这个问题。由于只有链接的答案是不鼓励的,下面我已经包括了原来的答案由bnjmnhndrsn.

我最近遇到了这个特定的问题,创建自己的转换预处理器将解决这个问题。这是我的设计:

package.json

代码语言:javascript
复制
"jest": {
    "moduleFileExtensions": [
      "js",
      "html"
    ],
    "transform": {
      "^.+\\.js$": "babel-jest",
      "^.+\\.html$": "<rootDir>/test/utils/htmlLoader.js"
    }
}

注意:默认情况下,babel-jest通常包括在内,但是如果您指定了自定义转换预处理程序,则似乎必须手动包含它。

test/utils/htmlLoader.js:

代码语言:javascript
复制
const htmlLoader = require('html-loader');

module.exports = {
    process(src, filename, config, options) {
        return htmlLoader(src);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69863320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档