Getting ParseError: Identifier is expected on importing svelte files for testing with jest

Getting ParseError: Identifier is expected on importing svelte files for testing with jest

我的 Jest 配置详细信息是

jest.config.js

module.exports = {
    transform: {
        '^.+\.svelte$': 'svelte-jester',
        '^.+\.js$': 'babel-jest',
    },
    moduleFileExtensions: ['js', 'svelte'],
}

babel.config.js

module.exports = {
    presets: [
        [
            '@babel/preset-env',
            {
                targets: {
                    node: 'current',
                },
            },
        ],
    ],
}

package.json

  .
  .
  "@babel/core": "^7.10.2",
    "@babel/preset-env": "^7.10.2",
    "babel-jest": "^26.0.1",
    "jest": "^26.0.1",
    "svelte-jester": "^1.0.6",
    "@testing-library/svelte": "^3.0.0"
  },
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack",
    "dev": "webpack-dev-server --content-base public",
    "test": "jest src",
    "test:watch": "npm run test -- --watch"
  },
  .
  .

我创建了 src/test 文件夹,我的 test.spec.js 如下

import {fireEvent, render} from '@testing-library/svelte';

import App from '../App.svelte';

describe('test', () => {
    test('Just a mock test', async () => {
        const myMock = jest.fn();
        console.log(myMock());

        myMock.mockReturnValueOnce(10).mockReturnValueOnce('x').mockReturnValue(true);

        console.log(myMock(), myMock(), myMock(), myMock());
    });
});

请注意,我只是为了测试目的使用了一个开玩笑的模拟函数,但是每当我导入一个 svelte 文件时,就像在这种情况下 App.svelte 我会收到如下错误

失败src/test/test.spec.js ● 测试套件未能 运行

ParseError: Identifier is expected

我找到了这个解析错误的可能解决方案。显然,IDE 无法解析在样式标签内定义的 test.svelte 文件中的某些样式 类,这就是它显示 ParseError 的原因。 我建议遇到此错误的任何人彻底检查您的 svelte 文件是否有错误,因为 svelte-testing-lib 在执行任何测试函数之前会解析整个文件。