Jest和React Native:如何模拟AccessibilityInfo

3

我正在使用Jest测试我的React Native应用程序,但以下代码行会导致问题。

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个回答

3

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

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

import { AccessibilityInfo } from 'react-native';

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接