Detox - 如何在新规范运行之前运行以前的规范以避免重复的测试步骤?

Posted

技术标签:

【中文标题】Detox - 如何在新规范运行之前运行以前的规范以避免重复的测试步骤?【英文标题】:Detox - How to get a previous spec to run before a new spec runs to avoid duplicate test steps? 【发布时间】:2018-08-23 04:46:59 【问题描述】:

所以我写了一个登录用户的测试:

describe('Login', () => 

beforeEach(async () => 
    await device.reloadReactNative()
  )

  it('Should grant access to a user with valid credentials', async () => 
    test code
  )
)

现在我正在编写一个新规范来注销用户,因此我希望登录规范在注销规范中运行,而不是再次编写相同的测试代码。我想它看起来像:

describe('Log Out', () => 

beforeEach(async () => 
    await device.reloadReactNative()
    it ('Should grant access to a user with valid credentials')
  )

  it('A User Logs Out', async () => 
    test code
  )

如何让 Detox 在继续执行新步骤之前运行第一次登录测试?

不幸的是,beforeEach it('应该授予具有有效凭据的用户访问权限')不起作用,所以我在语法中遗漏了一些东西。

【问题讨论】:

【参考方案1】:

这与 Detox 无关,此 describe/it API 与您正在使用的测试运行器有关。无论如何,使用函数:

describe('Login', () => 
  beforeEach(async () => 
    await device.reloadReactNative();
    await grantAccessToUserWithValidCredentials();
  );

  it('A User Logs Out', async () => 
    // here the app is ready for you specific log out use case 
  );

  async function grantAccessToUserWithValidCredentials() 
    //grant it
  
);

【讨论】:

【参考方案2】:

最佳做法是在测试中使用驱动程序。 您可以查看这些幻灯片: http://slides.com/shlomitoussiacohen/testing-react-components#/7

【讨论】:

以上是关于Detox - 如何在新规范运行之前运行以前的规范以避免重复的测试步骤?的主要内容,如果未能解决你的问题,请参考以下文章

如何在最新版本中配置 Detox 生命周期挂钩?

容器运行时5.2节--容器运行时接口规范CRI

shell开发规范

如何在 RSpec 中运行单个测试/规范文件?

如何仅在 IOS 上运行 Detox 测试并禁用 Android 运行

如何在 Detox 中启用 `debug` 运行 RN 测试?