模拟的对象无法直接访问



在开玩笑中,我有以下测试代码。我导入 NativeModules

import { NativeModules } from 'react-native';

然后,在每个测试之前,我将其添加到我自己的对象:

 beforeEach(() => {
    NativeModules.Dispatcher = {
        methodA: jest.fn(),
        methodB: jest.fn(),
        methodC: jest.fn()
    };
 });

在我正在测试的源代码中,我导入 NativeModules

import { NativeModules } from 'react-native';

我引用了我模拟的对象

class ClassThatIsTested {
   someMethod(parameter) {
      NativeModules.Dispatcher.methodA(parameter);
      //some other code
  }
}

这很好。但是,如果我尝试直接引用模拟的对象:

import { NativeModules } from 'react-native';
const { Dispatcher } = NativeModules;
class ClassThatIsTested {
   someMethod(parameter) {
     Dispatcher.methodA(parameter);
      //some other code
  }
}

失败:

Dispatcher.methodA is not a function

如果我打印Dispatcher,我会得到undefined

为什么会发生这种情况?为什么我不能直接访问模拟的对象?

import NativeModules from 'react-native';

是不正确的,您需要导入命名的导出NativeModules,而不是默认导出:

import {NativeModules} from 'react-native';

最新更新