首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用角v13 + Jest + ESM + NGXS运行测试错误

使用角v13 + Jest + ESM + NGXS运行测试错误
EN

Stack Overflow用户
提问于 2022-01-23 13:59:38
回答 1查看 434关注 0票数 1

从v12到v13的迁移非常困难,虽然应用程序的功能非常完美,但是测试仍然是我们这方面的一个问题。

到目前为止,我们一直在使用带有ESM的Jest成功地运行v12测试(因为我们有一个WebWorker,而import.meta.url从v12开始就需要ESM )。

但是现在v13只提供ES模块,它在一些需要角码的第三方库中破译。

既然jest-preset-angular支持使用工作示例v13 + ESM运行应用程序,我想再试一次。这也是在NGXS的松懈中讨论的。

我当前非常基本的配置如下:

代码语言:javascript
复制
const {pathsToModuleNameMapper} = require('ts-jest/utils');
const {paths} = require('./tsconfig.json').compilerOptions;
require('jest-preset-angular')

const esModules = ['tslib'].join('|');

/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
    preset: 'jest-preset-angular/presets/defaults-esm',
    globals: {
        'ts-jest': {
            useESM: true,
            stringifyContentPathRegex: '\\.(html|svg)$',
            tsconfig: '<rootDir>/tsconfig-esm.spec.json',
        },
    },
    moduleNameMapper: {
        ...pathsToModuleNameMapper(paths, {prefix: '<rootDir>'}),
        tslib: 'tslib/tslib.es6.js',
    },
    transformIgnorePatterns: [`/node_modules/(?!${esModules})`],
    setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
};

我已经多次查看文档,我跟踪在不同的回购程序上打开的迁移问题,试图解决这个问题。我还讨论了包括在内的最新相关问题。

有人成功地拥有了一个工作的v13 + Jest + ESM + NGXS堆栈吗?我好像搞不懂。

对于任何想要使用最低限度复制回购的人来说,你可以找到它https://github.com/jbpzen/angular13-jest-esm-ngxs-test。这些测试在没有ESM的情况下运行良好,并且使用ESM失败,因为我们最终试图从NGXS包中获得require @angular。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-07 15:08:03

在使用Jest保存import.meta.url语法时,我无法使它工作,Jest要求使用--experimental-vm-modules标志运行Node。

我注意到,只要节点标志不存在,我就可以使用经典的ESM配置来运行测试。

因此,我在测试配置中将import.meta.url语法转换为CommonJS,使用这个babel 插件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70822764

复制
相关文章

相似问题

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