仅在Provider中完成useEffect时运行测试

我有一个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对象,该对象在首次渲染时尚未准备就绪。

仅在初始化上述对象时,如何运行测试?

dciyy 回答:仅在Provider中完成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>
}
本文链接:https://www.f2er.com/3145823.html

大家都在问