如何在每个测试的基础上设置平台以进行玩笑测试?

fah*_*cht 5 reactjs jestjs react-native

我正在用 jest 测试 react-native 组件,我经常在我的风格中使用这样的东西:

import { StyleSheet, Platform } from 'react-native';

export default StyleSheet.create({
  container: {
    paddingTop: Platform.OS === 'ios' ? 30 : 10,
  }
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在 jest 测试Platform.OS中总是'ios'这意味着 android 分支没有得到测试。

让我觉得我可以通过一个玩笑配置来改变它,但因为我不想全局改变它,但在每个测试的基础上,这无论如何都没有意义。

Tur*_*ets 2

尝试将其添加到测试文件的顶部。

jest.mock('Platform', () => {
    const Platform = require.requireActual('Platform');
    Platform.OS = 'android';
    return Platform;
});
const Platform = require('Platform');
Run Code Online (Sandbox Code Playgroud)

您可能需要为 iOS 创建一个不同的文件,但是您在模拟中设置的任何平台都将适用于您的测试规范文件。