Reactjs TypeScript无法在Jest上下文中生成对象

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测试我的React应用程序。当我运行以下命令来运行测试时,
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".