我正在尝试将我的反应原生应用程序从使用Mocha / Chai切换到Jest,但我遇到了一个问题。
以前在我的test/setup.js
中,我有以下几点:
const NativeModules = require('react-native-mock-render').NativeModules;
const MockRNDeviceInfo = require('./support/mock-device-info.js').MockRNDeviceInfo;
NativeModules.RNDeviceInfo = MockRNDeviceInfo;
然而,当尝试测试我的一个组件时出现以下错误时,这不适用于jest:
TypeError: Cannot read property 'appVersion' of undefined
at Object.getVersion (node_modules/react-native-device-info/deviceinfo.js:39:20)
在NativeModules
上设置值的正确方法是什么?
答案 0 :(得分:4)
在Jest中,您可以使用以下内容来模拟模块:
jest.mock('react-native-device-info', () => {
return {
getVersion: () => 4
}
})
我只是嘲笑了getVersion
方法并返回了一个随机数,因为那是你失败的那个,但是你可能不得不在你的应用程序中添加你正在使用的那个(并且更改了价值到你想要的那个。)
您还可以使用jest.fn util来模拟模块的功能。
答案 1 :(得分:2)
最近,react-native-device-info
提供了一个测试助手。
所以,可以使用
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock'; // or use require
jest.mock('react-native-device-info', () => mockRNDeviceInfo);
答案 2 :(得分:-1)
我没有太多反应自己的经验,但我确实有一个朋友。我向他提到这个,他说你应该重新启动打包机。你可以先做到这一点:
退出终端窗口
终止打包程序然后
手动开头:
$ react-native start
我希望这会有所帮助!