Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Jest/React/Mobx:TypeError mobxReact.observer不是函数_Reactjs_Jestjs_Mobx_Mobx React_Ts Jest - Fatal编程技术网

Reactjs Jest/React/Mobx:TypeError mobxReact.observer不是函数

Reactjs Jest/React/Mobx:TypeError mobxReact.observer不是函数,reactjs,jestjs,mobx,mobx-react,ts-jest,Reactjs,Jestjs,Mobx,Mobx React,Ts Jest,我试图对React/Mobx代码运行一个简单的Jest测试,该代码只呈现一条路由并检查它是否被呈现。我不使用类和Mobx装饰器。我在使用Mobxobserver函数包装组件的每个位置都会收到一个错误: const MyComp: React.FC = observer(() => {...}) 我的笑话配置: module.exports = { "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|t

我试图对React/Mobx代码运行一个简单的Jest测试,该代码只呈现一条路由并检查它是否被呈现。我不使用类和Mobx装饰器。我在使用Mobx
observer
函数包装组件的每个位置都会收到一个错误:

const MyComp: React.FC = observer(() => {...})
我的笑话配置:

module.exports = {
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js|jsx)$",
    "moduleFileExtensions": [
        "ts",
        "tsx",
        "js"
    ],
    "roots": ['<rootDir>'],
    "modulePaths": ['<rootDir>'],
    "moduleDirectories": [
        ".",
        "src",
        "node_modules"
    ],
    "setupFiles": [
        "raf/polyfill",
        "<rootDir>/jest.setup.js"
    ],
    "snapshotSerializers": [
        "enzyme-to-json/serializer"
    ],
    "testPathIgnorePatterns": [
        "<rootDir>/node_modules/"
    ],
    "transform": {
        "\\.(ts|tsx)$": "ts-jest",
        "\\.js$": "babel-jest",
        '^.+.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2|mp4)$': 'jest-transform-stub',
        '^.+\\svg': 'jest-svg-transformer',
        '^.+\\inline.svg': 'jest-svg-transformer'
    },

    "moduleNameMapper": {
        "mobx": "<rootDir>/node_modules/mobx",
        '^.+.(css|styl|less|sass|scss|png|jpg|ttf|woff|mp4|woff2)$': 'jest-transform-stub',
        '^.+\\svg': 'jest-svg-transformer',
        '^.+\\inline.svg': 'jest-svg-transformer'
    },

    "coverageReporters": [
        "html", "text"
    ]
}

module.exports={
“testRegex”:“(/\uuu测试/*\(测试规范))\ \(ts | tsx | js | jsx)$”,
“moduleFileExtensions”:[
“ts”,
“tsx”,
“js”
],
“根”:[''],
“模块路径”:[''],
“模块目录”:[
".",
“src”,
“节点_模块”
],
“设置文件”:[
“raf/polyfill”,
“/jest.setup.js”
],
“快照序列化程序”:[
“酶到json/序列化程序”
],
“testPathIgnorePatterns”:[
“/node_modules/”
],
“转变”:{
“\\(ts | tsx)$”:“ts玩笑”,
“\\.js$”:“巴别塔玩笑”,
“^.+(css | styl | less | sass | scss | png | jpg | ttf | woff | woff2 | mp4)$”:“jest transform stub”,
“^.+\\svg”:“jest svg transformer”,
“^.+\\inline.svg”:“jest svg transformer”
},
“moduleNameMapper”:{
“mobx”:“/节点\模块/mobx”,
“^.+(css | styl | less | sass | scss | png | jpg | ttf | woff | mp4 | woff2)$”:“jest transform stub”,
“^.+\\svg”:“jest svg transformer”,
“^.+\\inline.svg”:“jest svg transformer”
},
“搬运工”:[
“html”、“文本”
]
}
我的测试用例:

describe('General:', () => {
    test('landing page renders ok', async () => {
        render((
            <ThemeProvider theme={ theme }>
                { renderRoutes(routes) }
            </ThemeProvider>
        ), { wrapper: BrowserRouter });
        await screen.findByText('Correct text here')
    })
});

description('General:',()=>{
测试('登录页呈现正常',异步()=>{
渲染((
{renderRoutes(routes)}
),{wrapper:BrowserRouter});
wait screen.findByText('此处的文本正确')
})
});
我试图保持一切不变,只是从一个组件中删除了mobx
observer
wrapper,并且在完全相同的设置下一切都很好

  • mobx:6.4.0
  • mobx反应:7.5.0
  • 笑话:26.6.3

注意:如果您提供的模块名称没有边界
^$
,则可能导致难以发现错误。例如,
继电器
将更换所有 包含
继电器
作为其名称中的子字符串:
继电器
反应继电器
graphql中继
将全部指向您的存根

您的
moduleNameMapper
中有
mobx
,它将同时删除
mobx
mobx react
,这不是您想要的。您应该能够通过删除该错误来消除该错误