开玩笑的模拟尺寸不变
Posted
技术标签:
【中文标题】开玩笑的模拟尺寸不变【英文标题】:Jest mock dimensions not changing 【发布时间】:2021-11-19 14:15:49 【问题描述】:我是第一次做测试,所以我很确定我做错了什么。
我正在编写测试用例,而我的组件在内部执行此操作。
const width, height = Dimensions.get('window')
对于我的测试用例,我正在考虑尺寸为width: 414, height:896
的 iPhone 11,我希望在所有测试用例中保持一致。
在测试设置宽度为750
和高度为1334
时响应本机测试库。
我想改成iPhone 11的尺寸,搜了网上找到了使用jest.mock
改功能的文章。
所以我做了这样的事情
it('renders correctly', () =>
jest.mock("Dimensions", () => (
get: jest.fn().mockReturnValue( width: 414, height:896 ),
))
const getByTestId = render(<Home />)
Home
组件有 console.log(width, height)
但它仍然给出宽度为 750 和高度为 1334(因为我的测试用例失败了)。
我该如何解决?
【问题讨论】:
【参考方案1】:如果您想在每个测试的基础上模拟 Dimensions.get
返回值,您可以使用 jest.doMock
创建以下模拟函数。
const mockDimensions = ( width, height ) =>
jest.resetModules()
jest.doMock('react-native/Libraries/Utilities/Dimensions', () => (
get: jest.fn().mockReturnValue( width, height )
))
然后在测试开始时调用它,如下所示。
it('renders correctly', () =>
mockDimensions( width: 414, height: 896 )
const getByTestId = render(<Home />)
// Your assertions
)
使用jest.doMock
代替jest.mock
以避免提升,这使我们可以在每个测试中而不是全局模拟维度。
【讨论】:
以上是关于开玩笑的模拟尺寸不变的主要内容,如果未能解决你的问题,请参考以下文章
使用OpenCV对图像进行两种平移操作(图像的尺寸变化与图像的尺寸不变)
xml 仅缩放视图内容的ViewGroup - 实际测量的尺寸保持不变
用于应用扩展的 IB 故事板:iPad 图标不存在、尺寸不变、方向不工作