Reactjs TypeScript无法在Jest上下文中生成对象
我正试图通过Jest测试我的React应用程序。当我运行以下命令来运行测试时,Reactjs TypeScript无法在Jest上下文中生成对象,reactjs,typescript,jestjs,Reactjs,Typescript,Jestjs,我正试图通过Jest测试我的React应用程序。当我运行以下命令来运行测试时,jest我得到以下错误: Debug Failure. False expression: Output generation failed 1 | import * as TestData from 'TestModule'; 2 | > 3 | export class TestDataEmitter { 4 | constructor() { }
jest
我得到以下错误:
Debug Failure. False expression: Output generation failed
1 | import * as TestData from 'TestModule';
2 |
> 3 | export class TestDataEmitter {
4 | constructor() { }
5 | public emit() {
6 | return TestData.data;
at Object.transpileModule (node_modules/typescript/lib/typescript.js:93386:18)
at Object.<anonymous> (component.ts:3:67)
有关文件:
打字
组件技术
test/test.ts
package.json
{
“依赖性”:{
“@types/jest”:“^22.2.3”,
“笑话”:“^22.4.3”,
“ts笑话”:“^22.4.2”,
“类型脚本”:“^2.8.1”
},
“脚本”:{
“测试”:“开玩笑”
},
“笑话”:{
“转变”:{
“^.+\.tsx?$”:“ts笑话”
},
“testRegex”:“测试”(?:\\\\\\/)(?:(?!助手?).*(:\\\\\\\/)**[Tt]ests?*\\\.tsx?”,
“moduleFileExtensions”:[
“ts”,
“tsx”,
“js”
],
“moduleNameMapper”:{
“TestModule”:“/typings.d.ts”
}
}
}
如果我删除moduleNameMapper
对象,我会得到“无法从'component.ts'中找到模块'TestModule'
这是一个包含上述文件的git repo:您只有
TestModule
的类型,但没有该模块的实现。应使用添加模块的存根
emit函数找不到TestModule的实现。创建一个空文件testModule
,并将映射器配置更改为
"TestModule": "<rootDir>/testModule.ts".
“TestModule”:“/TestModule.ts”。
现在,测试将解析模块,由于文件是空的,TestModule.data
将是undefined
如果我误解了这个问题,我深表歉意。您只有
测试模块的打字,但没有该模块的实现。应使用添加模块的存根
emit函数找不到TestModule的实现。创建一个空文件testModule
,并将映射器配置更改为
"TestModule": "<rootDir>/testModule.ts".
“TestModule”:“/TestModule.ts”。
现在,测试将解析模块,由于文件是空的,TestModule.data
将是undefined
如果我误解了问题,请道歉。不确定这是否有帮助,但您看到了吗?我没有看到。不幸的是,它似乎什么也没做。即使没有--coverage
,我的错误也会发生。您能在git回购中提供所有这些吗?将更快地调试并为您提供solution@TarunLalwani当然,这里面应该有所有的东西。不确定这是否有帮助,但你看到了吗?我没有看到。不幸的是,它似乎什么也没做。即使没有--coverage
,我的错误也会发生。您能在git回购中提供所有这些吗?将更快地调试并为您提供solution@TarunLalwani当然,这里面应该有所有的东西。是的,那正是我的问题。看起来SPFx是在后台创建模块的,但在单元测试的环境中它不可用。是的,这正是我的问题。看起来SPFx是在后台创建模块的,但在单元测试环境中不可用。
import * as TestData from 'TestModule';
export class TestDataEmitter {
constructor() { }
public emit() {
return TestData.data;
}
}
import * as TestData from 'TestModule';
export class TestDataEmitter {
constructor() { }
public emit() {
return TestData.data;
}
}
{
"devDependencies": {
"@types/jest": "^22.2.3",
"jest": "^22.4.3",
"ts-jest": "^22.4.2",
"typescript": "^2.8.1"
},
"scripts": {
"test": "jest"
},
"jest": {
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
"testRegex": "tests?(?:\\|/)(?:(?!helpers?).*(?:\\|/))*.*[Tt]ests?.*\\.tsx?",
"moduleFileExtensions": [
"ts",
"tsx",
"js"
],
"moduleNameMapper": {
"TestModule": "<rootDir>/typings.d.ts"
}
}
}
"TestModule": "<rootDir>/testModule.ts".