【问题标题】:RN code-push: testing component that hooks into codePushStatusDidChangeRN code-push:挂钩到 codePushStatusDidChange 的测试组件
【发布时间】:2019-05-10 16:33:36
【问题描述】:
我正在使用react-native-code-pushcodePush HOC,并运行一些逻辑来响应codePushStatusDidChange 事件挂钩,特别是当状态为SyncStatus.UPDATE_INSTALLED 时。
我没有找到在开发模式下运行时是否可以模拟代码推送事件的方法,以验证我们的代码是否正确响应事件挂钩。这可能吗,还是需要向代码推送服务器发布新版本?
附带问题:如果installMode 设置为codePush.InstallMode.ON_NEXT_SUSPEND,事件挂钩是否应该在下次重启时接收SyncStatus.UPDATE_INSTALLED? (我想一旦我弄清楚了第一个问题,我就可以自己回答第二个问题了!)。
【问题讨论】:
标签:
react-native
code-push
react-native-code-push
【解决方案1】:
@twelve17你好。
我可以分享我在测试和 CodePush 使用方面的经验。
我们有 e2e 测试 (detox + jet) 和单元测试 (react-native-test-utils + jest)。
当我们运行 e2e 测试时,我们指定环境并在根 HOC 中切换 codePush 设置:
checkFrequency: isTest()
? codePush.CheckFrequency.MANUAL
: codePush.CheckFrequency.ON_APP_START,
在这种情况下(手动检查和更新),codePush 在应用程序运行时不会做任何事情。它适用于 e2e 测试,因为在运行它们时确实不需要任何 codePush 任务。
关于 单元 测试:我们不测试 HOC 本身(目前),我们只介绍了一些无状态组件,所以在这里我只能建议您跳过此类测试(因为codePush 是第 3 方库)或为它的任何命令编写自己的包装器,并在测试运行时模拟/存根它们。