我正在为我正在研究的NodeJS应用程序编写一些单元测试,我对某些单元测试逻辑有疑问。
让我们说应用程序会创建一个" Group"对于用户,然后创建一些单独的用户,然后将用户添加到所述组,顺便说一下这些都是异步功能(MongoDB)
我希望有一个测试用例可以测试该组是否已成功创建,然后是另一个用于测试用户创建的测试用例,然后是用户 - >帐户关联。
显然,如果集团失败,或者用户失败,那么执行用户没有意义 - >组协会单元测试。我应该在Unit测试中写一些逻辑来检查是否有错误(在expect(err).to.equal(null)
之后),如果它为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 ) {
// ...
})
} )
})
updateContacts
,changePassword
和deleteUser
是否都会尝试创建自己的用户进行互动?这似乎有点多余..
希望我能正确解释。
答案 0 :(得分:2)
它在单元测试中的一个好习惯是只使用mocha方法之前和之后插入所需的文档进行测试,你也可以使用beforeEach和afterEach。您可以使用像sinon和httpMocks这样的库来帮助您创建间谍来测试异步服务的行为