问题 我们有一个相当复杂的应用程序,我们不希望在每个测试用例要经历整个过程中得到具体的屏幕进行测试,或者我们只是想跳到特定的一个与存储在终极版存储一些状态。
我已经试过 余由它加载特定屏幕,所以我可以直接测试它和排毒试验的每次运行余加载不同mocha.opts选择的测试情况下,这部分与使用的“反应天然-配置”,所以我可以加载不同的状态的多个初始状态在每次运行因此,例如,用于加载屏幕,我将做到以下几点:
题
我的方法是如此复杂,需要安装和开销的很多运行每个屏幕测试,所以我在想,如果任何人有同样的问题,我怎么能解决呢?总的来说,我怎么能对付反应本地线程的排毒?
我认为这是没有办法的排毒可以在运行时的反应本地线程和改变状态沟通,所以我想为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
});
});
如果使用的是世博会,它是用于指定环境release-channels,这里是你能做什么:
resetStorage
喜欢这里提出了一个方法:How to reset the state of a Redux store?(你可以在logout
已经实施)resetStorage
方法import { Constants } from 'expo'
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>
);