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

时间:2016-06-18 13:43:12

标签: node.js unit-testing mocha

编辑:这个问题已经回答,但是我有另一个类似的问题,我不想打开新帖子。

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

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

通常,在每次测试之后,我都希望运行一个代码块,从DB中删除用户,我使用“AfterEach”挂钩。

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

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

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

的afterEach钩子

1 个答案:

答案 0 :(得分:6)

您可以嵌套describe块,这样您就可以对用户交互测试进行分组,并将"与用户"分组。和#34;没有用户"测试:

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

});