我想使用jest组件@gorhom/portal
作为视图进行模拟。
我想这样做,因为<Portal />
组件需要在应用程序的根<PortalProvider />
。但我想测试单个屏幕。
这是我做的模拟:
import { jest } from '@jest/globals'
jest.mock('@gorhom/portal', () => {
const react = require('react-native')
return {
__esModule: true,
Portal: () => react.View,
usePortal: jest.fn(),
}
})
这是我正在做的测试
import React from 'react'
import renderer from 'react-test-renderer'
import ViewWithPortal from 'screens/ViewWithPortal'
test('renders correctly', () => {
expect(true).toBeTruthy()
const tree = renderer.create(<ViewWithPortal />).toJSON()
expect(tree).toMatchSnapshot()
})
但当我调用测试屏幕时,出现以下错误:
'PortalDispatchContext' cannot be null, please add 'PortalProvider' to the root component.
7 |
8 | test('renders correctly', () => {
> 9 | const tree = renderer.create(<CreateAccount />).toJSON()
| ^
10 | expect(tree).toMatchSnapshot()
11 | })
12 |
导致此问题的组件是:
const ViewWithPortal = () => {
...
return (
<Portal>
<BottomSheet>
{...}
</BottomSheet>
</Portal>
)
}
如果你有什么建议!
1条答案
按热度按时间qni6mghb1#
问题似乎出在jest上,它没有选取模拟文件的路径。请检查此路径是否已添加到模拟路径中,或者您是否在正确的目录中运行测试。