【问题标题】:Detox tests are breaking排毒测试正在打破
【发布时间】:2019-06-23 15:51:48
【问题描述】:

这是关于排毒 e2e 测试。 我正在运行我的测试,每个测试都在 it('xx', async => { await...});

测试以这样的方式编写脚本,第一个测试会登录,第二个测试会在主页上做一些事情,第三个测试会从主页导航到其他页面等等。

这里的问题是,一旦我的第一个测试执行,应用程序就会被注销并且所有连续的测试都失败了。 但是,当我在每个测试中包含所有步骤(从登录到所需功能)时,该套件工作正常。

我想知道为什么会这样。与异步功能有什么联系吗?

【问题讨论】:

  • 您是否随时致电await device.reloadReactNative();?您可以分享您的*.spec.js 文件之一的代码吗?
  • 啊!答对了。确切地。在我的一个文件中有一个 beforeEach 函数。在那里我添加了 reloadReactNative。完全错过了。谢谢。

标签: react-native automated-tests e2e-testing detox


【解决方案1】:

使用 Detox 的其中一个问题是样本测试规范使用 beforeEach,并且存在逐字复制我们给出的示例的趋势,有时会遗漏需要删除或应该添加的内容.

beforeEach 的这种特殊情况下,调用await device.reloadReactNative(); 这个命令会重新加载设备,就像您按下了CMD+R(在iOS 上)或RR(在Android 上)一样。这意味着已保存到 state 的项目丢失,应用程序几乎返回到其初始状态。

检查您的代码中是否存在违规行,您可以在下面提供的示例中看到它。如果您删除此行,那么它将在每次测试之前停止在您的设备上重新加载 React Native。

example.spec.js

https://github.com/wix/Detox/blob/master/examples/demo-react-native/e2e/example.spec.js

describe('Example', () => {
  beforeEach(async () => {
    await device.reloadReactNative(); // <- this is the problem
  });
  
  it('should have welcome screen', async () => {
    await expect(element(by.id('welcome'))).toBeVisible();
  });
  
  it('should show hello screen after tap', async () => {
    await element(by.id('hello_button')).tap();
    await expect(element(by.text('Hello!!!'))).toBeVisible();
  });
  
  it('should show world screen after tap', async () => {
    await element(by.id('world_button')).tap();
    await expect(element(by.text('World!!!'))).toBeVisible();
  });
});

【讨论】:

    猜你喜欢
    • 2018-08-23
    • 2020-03-16
    • 2018-04-20
    • 2018-06-28
    • 2021-06-21
    • 2018-05-13
    • 2019-07-19
    • 2021-11-08
    • 2018-12-20
    相关资源
    最近更新 更多