typescript - 用 RN Detox 模拟

标签 typescript react-native e2e-testing detox metro-bundler

我正在关注 detox mocking guide与 typescript 。该应用程序始终打印 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"
        }
      }
    }
  }

地铁配置文件
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 test Metro 服务器不记录 e2d 文件,所以我不得不使用 RN_SRC_EXT=e2e.js,e2e.ts yarn start 单独运行 Metro

最佳答案

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

关于typescript - 用 RN Detox 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62342688/

相关文章:

typescript - 在 Yarn Workspace 的不同包中使用不同版本的依赖项

react-native - 滚动 ScrollView 时动画高度

Android独有的闪屏: how to make it fill screen?

spring-boot - 我可以使用 Karate 来测试微服务吗?

angularjs - Protractor - 作为移动设备运行特定测试

javascript - Protractor 检查 JavaScript 全局变量的值

typescript - 检查变量是否属于具有相同属性的 Typescript 中的自定义类型

javascript - 如何立即取消续订?

RequireJS 模块的 TypeScript 定义返回而不导出

react-native - 在 native react 中访问堆栈页面时导航图标消失