【问题标题】:Have multiple Mocha unit-tests execute, contingent on the result of other unit test results执行多个 Mocha 单元测试,具体取决于其他单元测试的结果
【发布时间】:2016-02-17 16:22:35
【问题描述】:

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

假设应用程序为用户创建一个“组”,然后创建一些个人用户,然后将用户添加到所述组,顺便说一下,这些都是异步函数(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 是否都应该尝试创建自己的用户进行交互?好像有点多余。。

希望我解释正确。

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js


    【解决方案1】:

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

    【讨论】:

    • 我不确定这与这个问题有什么关系?我只是在问让单元测试依赖于其他单元测试是好还是坏的做法;如果多个测试用例围绕一个特定的数据库行(例如),是否应该将该行插入每个测试用例的开头?
    • 没关系,我现在明白你的意思了。我搞定了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多