在排毒测试负载终极版店内初始状态

问题描述 投票:10回答:2

问题 我们有一个相当复杂的应用程序,我们不希望在每个测试用例要经历整个过程中得到具体的屏幕进行测试,或者我们只是想跳到特定的一个与存储在终极版存储一些状态。


我已经试过 余由它加载特定屏幕,所以我可以直接测试它和排毒试验的每次运行余加载不同mocha.opts选择的测试情况下,这部分与使用的“反应天然-配置”,所以我可以加载不同的状态的多个初始状态在每次运行因此,例如,用于加载屏幕,我将做到以下几点:

  1. 对于具有我目前正在测试屏幕的所有细节终极版商店创建初始化状态。
  2. 创建mocha.opts由它指定-f标志来仅此运行测试用例。
  3. 创建.env.test.screenX文件,该文件会告诉商店的初始状态根据我选择哪一个ENVFILE加载的。
  4. 创建不同的配置,以在排毒每个屏幕,以便它可以通过排毒CLI加载正确摩卡OPTS。
  5. 每个I运行命令ENVFILE时间= env.test.screenX反应天然运行IOS所以项目将建成使用此配置,然后我可以运行排毒测试-c。

我的方法是如此复杂,需要安装和开销的很多运行每个屏幕测试,所以我在想,如果任何人有同样的问题,我怎么能解决呢?总的来说,我怎么能对付反应本地线程的排毒?

react-native redux react-redux detox redux-store
2个回答
5
投票

我认为这是没有办法的排毒可以在运行时的反应本地线程和改变状态沟通,所以我想为Leo Natan提到,采用嘲讽手法有点劈的,也可能是你的情况有用

你可以嘲笑你的App.js与屏幕(App.e2e.js),有按一个已知testIDs一些按钮每个按钮调度所需的所有行动,以加载一个特定的状态来存储,就可以开始每个测试套件文件在beforeEach方法的按钮,然后你就可以开始后,你的正常测试流程

例如:

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

App.e2e.js有2个按钮:

  • 一个用于身份验证派遣像onAuthenticationSuccess(user, authToken)行动
  • 另一个用于导航到该屏幕this.navigation.navigate("screenName")

test.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
  });
});

0
投票

如果使用的是世博会,它是用于指定环境release-channels,这里是你能做什么:

  1. 创建resetStorage喜欢这里提出了一个方法:How to reset the state of a Redux store?(你可以在logout已经实施)
  2. 在App.js进口resetStorage方法
  3. 在App.js补充:import { Constants } from 'expo'
  4. 然后用testID="resetStorageBtn"添加一个按钮,你可以用它来测试目的,该不会是在产能释放通道可见你render方法。所以render可能类似于此: return ( <Root> {Constants.manifest.releaseChannel !== 'production' && (<View> <Button onPress={() => resetStorage()} testID="resetStorageBtn"> <Text>Reset storage</Text> </Button> </View> )} <View> <AppNavigator /> </View> </Root> );
© www.soinside.com 2019 - 2024. All rights reserved.