在开玩笑中,我有以下测试代码。我导入 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';