Я использую response-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.
Не могу найти то, что мне не хватает, чтобы заставить это работать и почему оно не работает во время тестов, а не во время выполнения.
Спасибо!