我如何开玩笑地模拟 react-native-ibeacon

How do I mock react-native-ibeacon in jest

我正在尝试模拟react-native-ibeacon(一个原生模块,我只是想测试它是如何被调用的,包括下面Beacons对象中的所有函数)。

这是一个未定义信标的代码片段:

var React = require('react-native');
var Beacons = require('react-native-ibeacon');
jest.mock('react-native-ibeacon');

describe('beaconView', () => {

  console.log('Beacons', Beacons);

  Beacons.requestWhenInUseAuthorization();

  it('test pass', () => {
    expect(1).toBeTruthy();
  });
});

当我尝试调用 requestWhenInUseAuthorization 方法时失败。

我错过了什么?

您需要使用 jest.mock 的第二个参数提供一个好的模拟。

示例:

jest.mock('my-module', () => ({
    myFn: jest.fn();
}));

然后你可以做:

const myModule = require('my-module');

myModule.myFn() // calling the mock function.

您需要弄清楚您的外部本机模块具有哪些功能,然后创建一个具有类似行为的模拟。