Jest React-native如何模拟一个函数并返回响应

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] 
) 
} 
+1

我尝试添加这对我开玩笑测试文件calls属性,但我是越来越'类型错误:无法读取属性'getCurrentPosition'的undefined'。我将'global.navigator'改为'global.navigator.geolocation',现在我的测试通过了。免责声明:在写这篇文章的时候,我很自然地回应自己和开玩笑。 –