E2E:使用 Wix Detox 从 UIImagePickerController 选择图像

2024-04-25

Description

我需要编写一个 e2e 测试,在某些时候它必须在 UIImagePickerController 中选择一个图像,我尝试使用element(by.type('UIImagePickerController')). tapAtPoint()没有用。我需要一种选择图像的方法。我找到了一个way https://stackoverflow.com/a/42365872通过本机测试来做到这一点。

另外,模拟对我来说不是一种选择,因为我使用了一个react-native-repackeger需要的更高版本。

Steps to Reproduce
  • 与任何使用图像选择器的应用程序一起使用

  • 尝试使用element(by.type('UIImagePickerController')).tapAtPoint({ x: 50, y: 200 })

Detox, Node, Device, Xcode and macOS Versions
  • 排毒:6.0.2
  • 节点:8.9.0
  • 设备:iOS模拟器6s
  • 代码:9.2
  • macOS:10.13.1
  • 反应本机:0.46.4
Device and verbose Detox logs

没有日志,设备点击了正确的位置,但点击没有产生效果。


注意到最初的问题指出,在所呈现的情况下,模拟不是一个选项,但我在寻找解决方案时多次遇到了这个 Stack Overflow 问题,并想分享一下我最终针对我的情况提出的建议。

我能够通过包装来绕过 e2e 测试的限制react-native-image-picker在我自己的导出中:

ImagePicker.js

import ImagePicker from 'react-native-image-picker';

export default ImagePicker;

然后使用自定义扩展创建模拟(即e2e.js):

ImagePicker.e2e.js

const mockImageData = '/9j/4AAQSkZ...MORE BASE64 DATA OF CUTE KITTENS HERE.../9k=';

export default {
  showImagePicker: function showImagePicker(options, callback) {
    if (typeof options === 'function') {
      callback = options;
    }

    callback({
      data: mockImageData,
    });
  },
};

最后,配置 Metro 捆绑程序以优先考虑您的自定义扩展:

[项目根目录]/rn-cli.config.js

const defaultSourceExts = require('metro-config/src/defaults/defaults')
  .sourceExts;

module.exports = {
  resolver: {
    sourceExts: process.env.RN_SRC_EXT
      ? process.env.RN_SRC_EXT.split(',').concat(defaultSourceExts)
      : defaultSourceExts,
  },
};

然后运行RN_SRC_EXT设置为自定义扩展的环境变量:

RN_SRC_EXT=e2e.js react-native start

See the 排毒嘲笑指南 https://github.com/wix/Detox/blob/master/docs/Guide.Mocking.md了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

E2E:使用 Wix Detox 从 UIImagePickerController 选择图像 的相关文章

随机推荐