用 RN Detox 模拟

Posted

技术标签:

【中文标题】用 RN Detox 模拟【英文标题】:Mocking with RN Detox 【发布时间】:2020-10-02 04:15:17 【问题描述】:

我正在使用打字稿关注detox mocking guide。该应用始终打印X.ts 文件的console.log,而不是X.e2e.ts 文件。

依赖版本。

react-native: 0.61.5,
detox: 16.4.0

地铁配置:

"detox": 
    "test-runner": "jest",
    "runner-config": "e2e/config.json",
    "configurations": 
      "ios.sim.debug": 
        "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/App.app",
        "build": "RN_SRC_EXT=e2e.js,e2e.ts xcodebuild -workspace ios/App.xcworkspace -scheme 'App Test' -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
        "type": "ios.simulator",
        "device": 
          "type": "iPhone 11"
        
      
    
  

metro.config.js

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

module.exports = 
  transformer: 
    getTransformOptions: async () => (
      transform: 
        experimentalImportSupport: false,
        inlineRequires: false
      
    )
  ,
  resolver: 
    sourceExts: process.env.RN_SRC_EXT ? process.env.RN_SRC_EXT.split(",").concat(defaultSourceExts) : defaultSourceExts
  
;

console.log("default", defaultSourceExts);
console.log("module.exports from e2e", module.exports);

/** above console results into the following

default [ 'js', 'json', 'ts', 'tsx' ]
module.exports from e2e  transformer:
    getTransformOptions: [AsyncFunction: getTransformOptions] ,
  resolver:  sourceExts: [ 'e2e.ts', 'js', 'json', 'ts', 'tsx' ]  
*/

/src/AppEvent.js

const logEvent = (): void => 
  console.log("from non-test event file");
;

export default 
  logEvent
;

/src/AppEvent.e2e.ts

const logEvent = (): void => 
  console.log("from test event file");
;

export default 
  logEvent
;

当我运行detox build && detox testmetro 服务器时没有记录 e2d 文件,所以我不得不使用 RN_SRC_EXT=e2e.js,e2e.ts yarn start 单独运行 metro

【问题讨论】:

我在使用模拟的相同版本的 react-native 时遇到问题。您的 Metro 配置运行良好吗?看起来它没有替换 .e2e 文件的 prod 文件.. @NAUSHAD 也遇到了这个问题,你有没有想出解决办法@naushad 或@robto09? @EricCarmichael 我切换到 Appium 人。 【参考方案1】:

我也尝试过这种方法,但它比测试更多样板,检查一下:https://www.npmjs.com/package/10mock 你可以在这里查看示例代码:https://github.com/10play/10mock-example-app

【讨论】:

以上是关于用 RN Detox 模拟的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Detox 中启用 `debug` 运行 RN 测试?

排毒模拟文件

使用 Detox 和 Nock 模拟 API 调用

Detox 框架可以在模拟器/模拟器上拍照吗?

在 iOS 上运行 detox 测试时模拟器无法打开

在使用 Detox 运行测试期间,Android 模拟器无法启动应用程序