Мой код работает нормально, но у меня проблема с настройкой юнит-теста и его тестированием. Я получаю сообщение об ошибке при использовании кода, использующего библиотеку i18next, кто-нибудь может дать какой-нибудь совет?
Ниже приведена конфигурация от здесь
Error
TypeError: Невозможно прочитать свойство 'init' из неопределенного
7 | i18next
> 8 | .init({
| ^
9 | interpolation: {
10 | escapeValue: false,
11 | },
Helper.tsx
export function validation(controlName: string){
var messages = require('src/translations/i18next');
var requireMessage=messages.t('required');
//omit irelevant code
}
Helper.test.tsx
test('Validation',()=>{
expect(Helper.validation('My Name')).toBe('aaaaa');
})
макет setup.js
jest.mock('i18next', () => ({
use: () => {
return {
init: () => { }
};
},
t: k => k
}));
jest.config.js
module.exports = {
verbose: true,
'roots': [
'<rootDir>/src'
],
'transform': {
"^.+\\.(js)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.tsx?$": "ts-jest"
},
'testRegex': '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',
'moduleFileExtensions': [
'ts',
'tsx',
'js',
'jsx',
'json',
'node'
],
'moduleNameMapper': {
'^src/(.*)': '<rootDir>/src/$1',
'^components/(.*)': '<rootDir>/src/components/$1'
},
'snapshotSerializers': ['enzyme-to-json/serializer'],
'setupFiles': ['<rootDir>/src/jest/setupEnzyme.ts',
'<rootDir>/src/jest/mock-setup.js',
],
'moduleDirectories': ['node_modules', 'src']
}
i18next.tsx
import i18next from 'i18next';
var common_en = require( "src/translations/en/common.json");
var common_es = require( "src/translations/es/common.json");
i18next
.init({
interpolation: {
escapeValue: false,
},
lng: 'en', // 'en' | 'es'
resources: {
en: {translation: common_en},
es: {translation: common_es},
},
debug: true,
})
export default i18next;
tsconfig.json
{
"compilerOptions": {
"lib": [ "es2015","dom" ],
"target": "es5",
"module": "commonjs",
"esModuleInterop": true,
"jsx": "react",
"sourceMap": true,
"baseUrl": ".",
"allowSyntheticDefaultImports": true,
"paths": {
"src/*": ["src/*"],
"components/*": ["src/components/*"]
}
}
}