作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我所知,应该这样做,以便 useFocusEffect 可以作为 useEffect 进行测试(模拟)。我将 useFocusEffect 用于 fetchData:
useFocusEffect(
useCallback(() => {
fetchData();
}, [fetchData]),
);
"jest": "^24.9.0",
"react-native": "0.61.2",
"react-navigation": "^4.0.10",
"react-navigation-hooks": "^1.1.0",
"@testing-library/react-native": "^4.0.14",
最佳答案
假设您在测试中渲染您的组件,您需要将它包装在一个假的 <NavigationContext>
中。这样做可以让useFocusEffect
查找所需的内容,以确定组件的焦点是否已由您的应用程序导航集中。
此示例使用 render
中的 react-native-testing-library
。我认为它类似于其他渲染方法。
import { NavigationContext } from "@react-navigation/native"
import { render } from "react-native-testing-library"
// fake NavigationContext value data
const navContext = {
isFocused: () => true,
// addListener returns an unscubscribe function.
addListener: jest.fn(() => jest.fn())
}
// MyComponent needs to be inside an NavigationContext, to allow useFocusEffect to function.
const { toJSON } = render(
<NavigationContext.Provider value={navContext}>
<MyComponent />
</NavigationContext.Provider>
)
关于unit-testing - react-navigation-hooks : How to test useFocusEffect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60114670/
我是一名优秀的程序员,十分优秀!