React native 在解毒测试中加载redux存储初始状态
问题React native 在解毒测试中加载redux存储初始状态,react-native,redux,react-redux,detox,redux-store,React Native,Redux,React Redux,Detox,Redux Store,问题 我们有一个相当复杂的应用程序,我们不希望在每个测试用例中都经历整个过程,以到达特定的屏幕进行测试,或者我们只希望跳转到特定的屏幕,并在redux存储中存储一些状态 我所尝试的 我创建了多个初始状态,加载特定的屏幕,以便我可以直接测试它,对于每次排毒测试,我加载不同的mocha.opts来选择这部分测试用例,并使用“react native config”,以便我可以在每次运行中加载不同的状态,例如,对于加载屏幕,我将执行以下操作: 为redux商店创建initialState,其中包含我
我们有一个相当复杂的应用程序,我们不希望在每个测试用例中都经历整个过程,以到达特定的屏幕进行测试,或者我们只希望跳转到特定的屏幕,并在redux存储中存储一些状态
我所尝试的
我创建了多个初始状态,加载特定的屏幕,以便我可以直接测试它,对于每次排毒测试,我加载不同的mocha.opts来选择这部分测试用例,并使用“react native config”,以便我可以在每次运行中加载不同的状态,例如,对于加载屏幕,我将执行以下操作:
问题
我的方法非常复杂,需要大量的设置和开销来运行每个屏幕的测试,所以我想知道是否有人有相同的问题,我如何解决它?一般来说,我如何在detox中处理react本机线程?我认为detox无法在运行时与react本机线程通信并更改状态,因此我想到了一个使用上述模拟技术的小技巧,它在您的情况下可能很有用 你可以用一个屏幕(App.e2e.js)来模拟你的App.js文件,这个屏幕上有一些带有已知测试的按钮。每个按钮分配加载特定状态所需的所有操作以存储,你可以通过按下
beforeach
方法中的一个按钮来启动每个测试套件,然后你就可以启动正常的测试流
例如:
如果您想测试距离较远的屏幕(当用户实际使用应用程序时需要太多的点击才能到达),并且需要身份验证,您可以采用以下结构:
App.e2e.js有两个按钮:
- 一个用于发送操作的身份验证,如
onAuthenticationSuccess(用户,authToken)
- 另一个用于导航到该屏幕
this.navigation.navigate(“屏幕名”)
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
});
});
如果您使用的是Expo,并且它是用于指定环境的,那么您可以执行以下操作:
resetStorage
,如下所示:
(您可能已经在注销中实现了此功能)
resetStorage
方法从“expo”导入{Constants}
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>
);
返回(
{Constants.manifest.releaseChannel!=='production'&&
(
resetStorage()}testID=“resetStorageBtn”>
重置存储器
)}
);
没有真正的反应和排毒经验。但是在正常的react/redux应用程序中,您只需在每个测试用例中模拟redux存储,并使用您需要的状态。有什么原因不能在你的设置中在测试用例级别上解决吗?你也可以用解毒来模拟你的状态。阅读我们关于模仿的文档。@LeoNatan你能为我的案例提供具体链接吗,提前谢谢。它就在文档中:我没有关于你案例的具体信息。使用推荐的API来实现您想要的。好吧,但是如果我希望每个测试场景都有多个e2e文件,那么@LeoNatan是可行的