如何在特定的testing上运行摩卡上的“后”代码?

编辑:这个问题被回答,但我有另一个类似的问题,我不想打开一个新的线程。

我正在使用摩卡和柴来testing我的项目。

作为我的代码的一部分,我创build一个新的用户,并将其保存在我们的数据库(所以testing用户可以在我们的应用程序执行各种方法)。

一般来说,每次testing后,我想运行一个代码块,从DB中删除用户,我使用“AfterEach”挂钩。

我的问题是,我有1testing(可能会在未来更多),这不会创build一个用户(例如,'尝试login而无需注册'),所以我的AfterEach代码收到错误(不能删除的东西不存在)。

摩卡是否提供了在某些testing中禁用“AfterEach”的方法? 或者一些其他解决scheme,我的问题。

编辑:添加的问题:我的AfterEach挂钩涉及一个asynchronous方法,它返回一个承诺。 在摩卡文档中,我只看到了一个与callback一起工作的asynchronous钩子的例子。 我应该如何使用返回promise的afterEach钩子

您可以嵌套describe块,以便您可以将用户交互testing分组,并将“与用户”和“无用户”testing进行分组:

 describe('user interaction', () => { describe('with user in database', () => { // these will run only for the tests in this `describe` block: beforeEach(() => createUser(...)); afterEach (() => deleteUser(...)); it(...); }); describe('without user in database', () => { it(...); }); });