我有一个这样构造的I18n提供程序:
export function LanguageProvider({ children }) {
const lng = getLanguageFromPathname()
const [langIsLoaded, setLangIsLoaded] = useState(false)
useEffect(() => {
const loadI18n = async () => {
await i18next.use(initReactI18next).init({
resources: {
source: sourceLanguage,
en: enLanguage,
ach: achLanguage,
},
lng,
fallbackLng: 'source',
})
setLangIsLoaded(true)
}
loadI18n()
}, [lng])
if (!langIsLoaded) {
return null
}
return <React.Fragment key={lng}>{children}</React.Fragment>
}
在我的Jest测试中,我想访问在I18next
内部初始化的useEffect
对象,该对象在第一次渲染时尚未准备好。
仅在初始化上述对象时如何运行测试?
you have to watch for variable changes in brackets in
useEffect(() => {},[variable])
export function LanguageLoader({ children }) {
const lng = getLanguageFromPathname()
const [langIsLoaded, setLangIsLoaded] = useState(false)
useEffect(() => {
const loadI18n = async () => {
await i18next.use(initReactI18next).init({
resources: {
source: sourceLanguage,
en: enLanguage,
sv: svLanguage,
},
lng,
fallbackLng: 'source',
})
setLangIsLoaded(true)
}
loadI18n()
})
if (!langIsLoaded) {
return null
},[i18next]
return <React.Fragment key={lng}>{children}</React.Fragment>
}