【发布时间】:2019-05-14 09:59:50
【问题描述】:
我有几个场景要执行。在执行这些场景之前,我会在数据库中引入一些测试数据(使用 beforeAll),并在执行完这些场景后删除这些数据。
问题在于,如果场景失败,则 afterAll 中的代码不会被执行。因此,测试数据不会从数据库中删除。有没有其他方法可以做到这一点?
提前致谢。
【问题讨论】:
标签: javascript postgresql cucumber hook bdd
我有几个场景要执行。在执行这些场景之前,我会在数据库中引入一些测试数据(使用 beforeAll),并在执行完这些场景后删除这些数据。
问题在于,如果场景失败,则 afterAll 中的代码不会被执行。因此,测试数据不会从数据库中删除。有没有其他方法可以做到这一点?
提前致谢。
【问题讨论】:
标签: javascript postgresql cucumber hook bdd
首先,您应该模拟数据库连接,有很多库可以这样做,例如,如果您使用的是mongodb,请查看Mockgoose
当调用 mongoose.connect 时,Mockgoose 通过在背面启动 mongod 来提供测试数据库。默认情况下,它在没有持久性的内存存储中使用。
对于永远不会运行的afterAll 钩子(这是测试失败时的默认行为):
我建议您截断 beforeAll 钩子中的所有内容,因此每当您开始运行测试时,您都有一个空数据库,即使您有一些上次运行的数据(如果您使用 Mockgoose 或类似)
【讨论】: