如何在特定测试中在Mocha上运行'After'代码?

Aka*_*utz 2 unit-testing mocha.js node.js

编辑:这个问题得到了回答,但我有另一个类似的问题,我不想打开新的主题.

我正在使用Mocha和Chai来测试我的项目.

作为我的代码的一部分,我创建了一个新用户并将其保存在我们的数据库中(因此测试用户可以在我们的应用程序上执行各种方法).

通常,在每次测试之后,我想运行一个代码块,用于从DB中删除用户,我使用"AfterEach"挂钩.

我的问题是我有一个测试(未来可能更多)没有创建用户(例如,'尝试登录而不注册'),所以我的AfterEach代码收到一个错误(不能删除一些不存在).

Mocha是否提供了在某些测试中禁用'AfterEach'的方法?或者我的问题的其他一些解决方案.

编辑:添加问题:我的AfterEach挂钩涉及一个返回promise的异步方法.在Mocha文档中,我只看到了一个与回调一起使用的异步钩子的例子.我怎么应该使用返回promise的afterEach钩子

rob*_*lep 6

您可以嵌套describe块,因此您可以对用户交互测试进行分组,还可以对"with user"和"without user"测试进行分组:

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(...);
  });

});
Run Code Online (Sandbox Code Playgroud)