Jest React-native如何模拟一个函数并返回响应
问题描述:
我是Jest单元测试的新手。Jest React-native如何模拟一个函数并返回响应
我想测试一个组件多次调用到Geolocation getCurrentPosition()方法。
对于函数的每次调用,我想返回一个新的坐标对象。
我已阅读各种文章和教程,但我仍在挣扎。
任何想法?
答
您可以使用global.navigator
访问导航器对象。因此嘲笑getCurrentPosition
只是分配一个jest.fn
它:
global.navigator = {
getCurrentPosition : jest.fn()
}
那么如何在每次调用返回新坐标。最简单的解决方案将是一个全球性的反
const coords = [[1, 2], [2, 3]]
let counter = -1
global.navigator = {
getCurrentPosition: jest.fn(() {
counter++
return coords[counter]
})
}
或者你可以使用的模拟
const coords = [[1, 2], [2, 3]]
global.navigator = {
getCurrentPosition: jest.fn(() =>
coords[global.navigator.getCurrentPosition.mock.calls.length]
)
}
我尝试添加这对我开玩笑测试文件
calls
属性,但我是越来越'类型错误:无法读取属性'getCurrentPosition'的undefined'。我将'global.navigator'改为'global.navigator.geolocation',现在我的测试通过了。免责声明:在写这篇文章的时候,我很自然地回应自己和开玩笑。 –