根据其他单元测试结果执行多个 Mocha 单元测试

Have multiple Mocha unit-tests execute, contingent on the result of other unit test results

我正在为我正在处理的 NodeJS 应用程序编写一些单元测试,我对某些单元测试逻辑有疑问。

假设应用程序为用户创建了一个 "Group",然后创建了一些单独的用户,然后将用户添加到所述组,顺便说一下,这些都是异步函数 (MongoDB)

我想要一个测试组是否成功创建的测试用例,然后是一个单独的测试用例来测试用户创建,然后是用户 -> 帐户关联。

显然,如果Group失败,或者Users失败,那么执行User -> Group关联单元测试就没有意义了。我是否应该在单元测试中编写一些逻辑来检查是否存在错误(在 expect(err).to.equal(null) 之后),如果为空,则执行其他测试用例?那是唯一对我有意义的逻辑,但是我在任何其他包的任何单元测试中都没有看到任何这种类型的逻辑(我查看了一些单元测试以查看是否可以发现与此类似的东西)

此外,如果我有多个与新创建的用户交互的测试用例,那么这些测试用例中的每一个是否都应该尝试创建一个用户,然后继续进行自己独特的测试?或者我应该尝试构建它以便它全部与刚刚创建的用户交互(如果成功)

例如:

describe('User', function () {
    describe( '.createUser', function() {
        it( 'Create user Foobar', function( done ) {
            // ...
        })
    } )

    describe( '.updateContacts', function() {
        it( 'Update contacts for user Foobar', function( done ) {
            // ...
        })
    } )

    describe( '.changePassword', function() {
        it( 'Change password for user Foobar', function( done ) {
            // ...
        })
    } )

    describe( '.deleteUser', function() {
        it( 'Delete user Foobar', function( done ) {
            // ...
        })
    } )
})

updateContactschangePassworddeleteUser 都应该尝试创建自己的用户进行交互吗?好像有点多余..

希望我解释正确。

在单元测试中只使用 before 和 after mocha 方法插入需要的文档进行测试是一个很好的做法,你也可以使用 beforeEach 和 afterEach。你可以使用像 sinon 和 httpMocks 这样的库来帮助你创建间谍来测试异步服务的行为