我有2个文件,一个是具有一些功能的Helper.ts,另一个是Helper.spec.ts,它是使用jest的Helper.ts的测试文件。
我将其与纯javascript一起使用,但我将其更改为typescript,我安装了types/jest,我的jest文件是Helper.test.js,我将其更改为Helper.spec.ts,从那以后我遇到了此错误,有人可以帮我弄清楚吗?
这是我的 Helper.ts 的一部分:
export class Helper {
static isDefined(value: any): boolean {
const s = value;
const status = s !== null && s !== undefined;
return status;
}
static isNotDefined(value: any): boolean {
return !this.isDefined(value);
}
}
这是我的 Helper.spec.ts 的一部分:
import { Helper } from './Helper';
describe('Helpers tests', () => {
test('isDefined deve retornar true se o valor estiver definido', () => {
expect(Helper.isDefined('')).toBeTruthy();
expect(Helper.isDefined(null)).toBeFalsy();
expect(Helper.isDefined(undefined)).toBeFalsy();
expect(Helper.isDefined(0)).toBeTruthy();
expect(Helper.isDefined('hello')).toBeTruthy();
});
test('isNotDefined deve retornar true se o valor não estiver definido', () => {
expect(Helper.isNotDefined('')).toBeFalsy();
expect(Helper.isNotDefined(null)).toBeTruthy();
expect(Helper.isNotDefined(undefined)).toBeTruthy();
});
}
这是我的tsconfig.json,不知道有没有帮助
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"strict": true,
"jsxImportSource": "vue",
"noImplicitThis": true,
"jsx": "preserve",
"allowImportingTsExtensions": true,
"moduleResolution": "node",
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true
},
"types": ["@types/node", "@types/vue", "webpack-env"],
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"exclude": ["node_modules"]
}
我的 package.json 中没有任何笑话配置,只有 :
"@types/jest": "^29.5.12",
"@typescript-eslint/eslint-plugin": "^7.6.0",
"@typescript-eslint/parser": "^7.6.0",
"babel-jest": "^29.7.0",
"jest": "^29.7.0",
我检查了逻辑,没有发现任何错误,也许我遗漏了一些东西
您是否可能丢失了
jest.config.json
文件?
它应该看起来像这样:
{
"moduleFileExtensions": ["js", "json", "ts"],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"maxWorkers": "100%",
"transform": {
"^.+\\.(t|j)s$": [
"ts-jest", {
"isolatedModules": true
}
]
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"coveragePathIgnorePatterns": ["index.ts", ".module.ts", "main.ts"],
"testEnvironment": "node",
"moduleNameMapper": {
"@/(.*)": "<rootDir>/$1"
}
}
请记住,我发布了来自 NodeJS 服务器的示例;根据您的情况,可能需要其他选项。