【问题标题】:What can I do if afterAll is not being executed when a scenario fail?如果在场景失败时没有执行 afterAll,我该怎么办?
【发布时间】:2019-05-14 09:59:50
【问题描述】:

我有几个场景要执行。在执行这些场景之前,我会在数据库中引入一些测试数据(使用 beforeAll),并在执行完这些场景后删除这些数据。

问题在于,如果场景失败,则 afterAll 中的代码不会被执行。因此,测试数据不会从数据库中删除。有没有其他方法可以做到这一点?

提前致谢。

【问题讨论】:

    标签: javascript postgresql cucumber hook bdd


    【解决方案1】:

    首先,您应该模拟数据库连接,有很多库可以这样做,例如,如果您使用的是mongodb,请查看Mockgoose

    当调用 mongoose.connect 时,Mockgoose 通过在背面启动 mongod 来提供测试数据库。默认情况下,它在没有持久性的内存存储中使用。

    对于永远不会运行的afterAll 钩子(这是测试失败时的默认行为):

    我建议您截断 beforeAll 钩子中的所有内容,因此每当您开始运行测试时,您都有一个空数据库,即使您有一些上次运行的数据(如果您使用 Mockgoose 或类似)

    【讨论】:

    • 感谢您的回答,但它对我不起作用,因为我使用的是 postgres 数据库。
    • 你是在做单元测试还是集成测试?
    • 集成测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多