reactjs - 单元测试 i18Next - TypeError:无法读取未定义的属性“init”
问题描述
我的代码工作正常,但我在设置单元测试和测试它时遇到了问题。当有使用 i18next 库的代码时出现错误,任何人都可以提供一些建议吗?
下面的配置是从这里获取的
错误
TypeError:无法读取未定义的属性“init”
7 | i18next > 8 | .init({ | ^ 9 | interpolation: { 10 | escapeValue: false, 11 | },
助手.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/*"]
}
}
}
解决方案
任何人都可以就此提供建议吗?我还是一头雾水!我更改此行后错误消失
import i18next from 'i18next';
至
import * as i18next from 'i18next';
推荐阅读
- azure-devops - Azure DevOps 管道仅用于部署已更改的 arm 模板
- javascript - React 中的 Onclick 方法影响表格中的每个列表项,应该只影响被点击的那个
- memory-profiling - dotMemory - 快照中未列出的应用程序命名空间 - 仅是框架命名空间
- php - Wordpress:如何在页面上显示用户
- ios - 当 ObservedObject 在其他类中发生更改时如何在 ContentView 中运行方法 [Swift 5 iOS 13.4]
- swift - Curl 命令可在 CLI 上运行,但 Alamofire 无法进行身份验证
- c++ - 手动设置 cin.fail()
- php - PHP intl NumberFormatter::SPELLOUT 的源代码在哪里?
- sql - SQL 过滤掉具有多个列条目的行
- angular - 服务的依赖注入不起作用