【问题标题】:Resetting database state after running each test case in Protractor在量角器中运行每个测试用例后重置数据库状态
【发布时间】:2019-01-07 12:41:06
【问题描述】:

所以,我看到了很多关于这个主题的问题(1),但不知何故,我不想实施那里提供的答案。例如在beforeAll() 中进行重置或运行grunt 任务等。

比如说,我有一个包含 25 个测试的规范文件,其中任何一个测试都可以修改数据库状态,使得下一个测试可能会失败。我的API 中有一个具有更高权限级别的测试端点,我正在使用它们来重置我在个人测试中所做的更改。问题是如果任何测试抛出任何异常,重置数据库状态的代码将不会运行。

所以我决定有一个变量:比如databaseChanges,它将存储有关通过测试完成的任何数据库更改的信息。因此,每当我要通过测试进行任何数据库更改时,我都会在更改之前更新 databaseChanges 变量。我使用此变量在afterEach() 中恢复我的数据状态,并在beforeEach() 中重置此databaseChanges

问题: 我面临的问题是我想验证这些更改是否成功。当我在afterEach() 中使用expect() 语句时,它会抛出一个错误,并显示类似èxpect() not allowed outside it(), or a timeout occurred.... 的消息,所以我相信我的afterEach() 中不能有expect(),或者我可以吗?或者有什么方法可以在afterEach() 中运行it(),当然这看起来像是一个无限循环。

  1. 我想获得关于我正在做的事情是否正确的建议 重置数据库,或者我应该在我的 beforeAll()等和
  2. 有什么方法可以验证 在我的àfterEach() 中成功更新了数据库。

【问题讨论】:

    标签: angular protractor e2e-testing


    【解决方案1】:

    这就是我组织测试的方式,它可能不是最好的方法,但它对我有用。第一个测试创建对象,然后跟随将操作该对象的测试,最后一个测试删除创建的对象。 另一种方法是创建要放置在 BeforeAll 中并在 AfterAll 中删除的对象。

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 2017-04-29
      • 2012-05-29
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      相关资源
      最近更新 更多