我刚刚尝试了Detox进行e2e测试UI自动化。这个图书馆真的很好。我只想问一下完成测试套件后是否有任何方法可以清除redux状态。就我而言,我想清除购物车
这是我的代码:
import CartActions, {reducer, INITIAL_STATE} from '../../App/Redux/CartRedux'
describe('Add menu from home screen and do checkout', () => {
it ('should navigate to meal detail screen after tapping first meal', async () => {
await waitFor(element(by.id('MealListSlider'))).toBeVisible().withTimeout(7500)
await element(by.id('homeMenu_0')).tap()
await expect(element(by.id('MealDetailScreen'))).toBeVisible()
})
it ('should show shopping cart button after add item to cart', async () => {
await element(by.id('addToCart_')).tap()
await expect(element(by.id('shoppingCartButtonOnMealDetail'))).toBeVisible()
})
it ('should navigate to checkout screen', async () => {
await element(by.id('shoppingCartButtonOnMealDetail')).tap()
await expect(element(by.id('SingleOrderCheckoutScreen'))).toBeVisible()
})
afterAll(() => {
reducer(INITIAL_STATE, CartActions.userEmptyingCart())
})
})
我正在使用Jest作为我的测试跑步者。如果我做错了,请帮助我。谢谢
排毒:8.0.0 React Native:0.47.2 设备:iOS Xcode:9 macOS:High Sierra
答案 0 :(得分:1)
您可能对Detox在哪个上下文中运行感到困惑。排毒测试的代码在计算机和操作系统的上下文中运行(就像您运行的任何Node.js应用程序一样),但是您的应用程序代码在设备/模拟器/模拟器上运行。
最重要的是,您不能简单地从$sql ="select * from table1 group by destination";
$result=mysql_query($sql) or die(mysql_error());
while($myrow=MySQL_fetch_array($result,MYSQL_ASSOC))
{
extract($myrow);
$invno=$myrow[2];
sql2 = "select total from table2 where invoice_no like '%$invno%'";
$result2 = mysqli_query($conn, $sql);
while ($row=mysqli_fetch_row($result2)) {
$value = $row[0];
}
if (destination == "Washington")
{ $wstotal += $value;}
else if (destination == "Hawaii")
{ $wstotal += $value;}
else if (destination == "Budapest")
{ $wstotal += $value;}
}
访问应用程序代码。
通常,您会使用device API种方法,例如detox
或launchApp
。
P。 S.随机建议。如果您确实想与Detox的Redux reducer混为一谈,请考虑随应用程序的开发版本一起提供某种“开发人员模式屏幕”,从Detox访问它,然后点击为特定用例创建的按钮。打开您的想象力和创造力-也许一个特定的键盘监听器就足够了(而不是一个额外的屏幕)。但是无论如何,也许坚持使用reloadReactNative
-通常就足够了。