如何在每个测试的基础上为笑话测试设置平台



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

import { StyleSheet, Platform } from 'react-native';
export default StyleSheet.create({
  container: {
    paddingTop: Platform.OS === 'ios' ? 30 : 10,
  }
});

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

这让我认为我可以通过一个jest配置来改变这个,但是因为我不想在全局上改变它,但是在每个测试的基础上,这是没有意义的

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

jest.mock('Platform', () => {
    const Platform = require.requireActual('Platform');
    Platform.OS = 'android';
    return Platform;
});
const Platform = require('Platform');

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

您需要使用Jest预设的haste属性模拟出每个平台。我建议使用jest-expo,它扩展了默认的React Native Jest预设,并多次运行测试,每次都使用不同的平台。

免责声明:当我遇到同样的问题时,我将此功能添加到jest-expo

相关内容

  • 没有找到相关文章

最新更新