gpt4 book ai didi

reactjs - ' react -i18next : withNamespaces is not a function' when testing

转载 作者:行者123 更新时间:2023-12-03 14:26:19 28 4
gpt4 key购买 nike

我在 typescript 项目上使用react-i18next。我使用的是 translate() HOC,但它已被弃用,因此我已迁移到 withNamespaces()。过去一切都运行得很好。

现在,当我启动应用程序时,一切都工作正常,但在测试过程中却严重失败:

FAIL  src/containers/MainMenu/MainMenu.test.tsx
Test suite failed to run

TypeError: react_i18next_1.withNamespaces is not a function

at Object.<anonymous> (src/components/AppMenu/AppMenu.tsx:17:35)
at Object.<anonymous> (src/components/AppMenu/index.ts:3:17)
at Object.<anonymous> (src/containers/MainMenu/MainMenu.tsx:18:17)
at Object.<anonymous> (src/containers/MainMenu/MainMenu.test.tsx:42:18)
at process._tickCallback (internal/process/next_tick.js:68:7)

这是我的 AppMenu 组件:

我的应用程序是一个非常标准的 Create-React-App 安装。

import {TranslationFunction} from 'i18next';
import * as React from 'react';
import {withNamespaces, WithNamespaces} from 'react-i18next';
import {NavLink} from 'react-router-dom';

export interface IAppMenuProps extends WithNamespaces {
items: IAppMenuItem[];
t: TranslationFunction;
}

function AppMenu({items, t}: IAppMenuProps): JSX.Element {
return (
// ... some stuff here
);
}

export default withNamespaces()(AppMenu);

以及失败的测试文件:

import * as React from 'react';
import {BrowserRouter as Router} from 'react-router-dom';
import {create} from 'react-test-renderer';
import MainMenu from './MainMenu';

describe('MainMenu', () => {
test('Snapshot test', async () => {
const comp = create(
<Router>
<MainMenu />
</Router>
);

expect(comp).toMatchSnapshot();
});
});

我的应用程序是标准的 Create-React-App 安装,因此测试是使用 jest 运行的。

无法找到我缺少什么来使其正常工作以及为什么它在测试期间而不是在运行时失败。

谢谢!

最佳答案

非常愚蠢的问题..我忘记了我有一个用于react-i18next的自动模拟文件。所以我只需要将这个模拟中的 translate 函数更改为 withNamespaces 即可。

关于reactjs - ' react -i18next : withNamespaces is not a function' when testing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53157470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com