Jest和React Native:如何模拟AccessibilityInfo

时间:2019-06-19 17:24:19

标签: reactjs unit-testing react-native mocking jestjs

我正在用Jest测试我的react本地应用程序,以下代码给我一个问题。

AccessibilityInfo.announceForAccessibility(errorMessages[0]);

错误:

TypeError: Cannot read property 'announceForAccessibility' of undefined

我尝试使用

对其进行模拟
jest.mock('react-native', () => ({
  ...jest.requireActual('react-native'),
  AccessibilityInfo: {
    fetch: jest.fn(),
    addEventListener: jest.fn(),
    setAccessibilityFocus: jest.fn(),
    announceForAccessibility: jest.fn(),
    removeEventListener: jest.fn(),
  },
}));

但这带来了很多其他问题。

我该如何在react native包上模拟这个特定的导出?

1 个答案:

答案 0 :(得分:1)

使用AccessibilityInfo.fetch()确定用户是否使用屏幕阅读器时,我遇到了同样的问题。

命名导入的一个选项是使用spyOn方法。

import { AccessibilityInfo } from 'react-native';

jest
  .spyOn(AccessibilityInfo, 'announceForAccessibility')
  .mockImplementation(...);