iRo*_*tia 4 testing typescript jestjs react-native react-native-testing-library
我是第一次进行测试,所以我非常确定我做错了什么。
我正在编写测试用例,我的组件在内部执行此操作。
const {width, height} = Dimensions.get('window')
Run Code Online (Sandbox Code Playgroud)
对于我的测试用例,我考虑的是 iPhone 11,其尺寸为width: 414, height:896
,并且我希望所有测试用例的尺寸保持一致。
在测试时响应本机测试库,将宽度设置为750
,高度设置为1334
。
我想更改为iPhone 11尺寸,我在网上搜索了一些用于jest.mock
更改功能的文章。
所以我做了这样的事情
it('renders correctly', () => {
jest.mock("Dimensions", () => ({
get: jest.fn().mockReturnValue({ width: 414, height:896 }),
}))
const {getByTestId} = render(<Home />)
Run Code Online (Sandbox Code Playgroud)
Home
组件有console.log(width, height)
,但它仍然给出宽度为 750,高度为 1334(因此我的测试用例失败)。
我该如何修复它?
如果您想Dimensions.get
在每次测试的基础上模拟返回值,您可以使用jest.doMock
.
const mockDimensions = ({ width, height }) => {
jest.resetModules()
jest.doMock('react-native/Libraries/Utilities/Dimensions', () => ({
get: jest.fn().mockReturnValue({ width, height })
}))
}
Run Code Online (Sandbox Code Playgroud)
然后在测试开始时调用它,如下所示。
it('renders correctly', () => {
mockDimensions({ width: 414, height: 896 })
const { getByTestId } = render(<Home />)
// Your assertions
})
Run Code Online (Sandbox Code Playgroud)
jest.doMock
使用而不是jest.mock
避免提升,这使我们能够模拟每个测试的尺寸而不是全局的尺寸。
归档时间: |
|
查看次数: |
4361 次 |
最近记录: |