gpt4 book ai didi

react-native - 在 Detox 测试中加载 redux 存储初始状态

转载 作者:行者123 更新时间:2023-12-04 02:20:29 25 4
gpt4 key购买 nike

问题
我们有一个非常复杂的应用程序,我们不希望在每个测试用例中都经过整个过程以到达特定屏幕来测试它,或者我们只想跳转到特定屏幕,并将某些状态存储在 redux 存储中。

我试过的
我做了多个加载特定屏幕的初始状态,所以我可以直接测试它,对于每次排毒测试我加载不同的 mocha.opts 来选择这部分测试用例并使用'react-native-config'所以我可以加载不同的状态在每次运行中,例如为了加载屏幕,我将执行以下操作:

  • 为 redux 存储创建 initialState,其中包含我当前正在测试的屏幕的所有详细信息。
  • 通过在其中指定 -f 标志,创建 mocha.opts 以仅运行此测试用例。
  • 创建 .env.test.screenX 文件,它会告诉商店根据我选择的 ENVFILE 加载哪个初始状态。
  • 在 detox 中为每个屏幕创建不同的配置,以便它可以通过 detox CLI 加载正确的 mocha opts。
  • 每次我运行命令 ENVFILE=env.test.screenX react-native run-ios 时,项目将使用此配置构建,然后我可以运行 detox test -c 。


  • 问题

    我的方法非常复杂,需要大量的设置和开销来为每个屏幕运行测试,所以我想知道是否有人遇到同样的问题,我该如何解决?一般来说,我如何处理排毒中的 react 原生线程?

    最佳答案

    我认为 detox 无法在运行时与 react native 线程通信并更改状态,所以我想到了一个使用模拟技术的小技巧,如 Leo Natan提到,它可能对你的情况有用

    你可以用一个屏幕 (App.e2e.js) 模拟你的 App.js 文件,它有一些带有已知 testID 的按钮,每个按钮调度加载特定状态所需的所有 Action 来存储,你可以通过按下其中之一来启动每个测试套件beforeEach 中的按钮方法然后您可以在此之后开始正常的测试流程

    例如:

    如果你想测试一个很远的屏幕(当用户实际使用应用程序时需要点击太多次才能到达)并且需要身份验证,你可以有以下结构:

    App.e2e.js 有 2 个按钮:

  • 一种用于发送类似 onAuthenticationSuccess(user, authToken) 之类的操作的身份验证
  • 另一个用于导航到该屏幕 this.navigation.navigate("screenName")

  • 测试.js
    describe("Screen work as intended", () => {
    beforeEach(async () => {
    await device.reloadReactNative();
    await element(by.id("authButtonID")).tap();
    await element(by.id("navigateButtonID")).tap();
    });

    it("should do something", async () => {
    //user is loaded in store
    //current screen is the screen you want to test
    });
    });

    关于react-native - 在 Detox 测试中加载 redux 存储初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49321032/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com