单元测试和集成测试的分离

时间:2016-06-03 04:15:04

标签: node.js testing mocha jestjs

我有兴趣创建完整的模拟单元测试,以及检查某些异步操作是否已正确返回的集成测试。我想要unit测试的一个命令和integration测试的一个命令,我可以在我的CI工具中单独运行它们。最好的方法是什么?像mocha和jest这样的工具似乎只关注一种做事方式。

我看到的唯一选择是使用mocha并在目录中有两个文件夹。

类似的东西:

  • __unit__
  • __integration__

然后我需要一些方法告诉mocha运行__unit__目录中的所有src测试,另一个告诉它运行所有__integration__测试。

思想?

2 个答案:

答案 0 :(得分:36)

Mocha支持目录,文件通配和测试名称grepping,可用于创建"组"测试。

目录

test/unit/whatever_spec.js
test/int/whatever_spec.js

然后使用

对目录中的所有js文件运行测试
mocha test/unit
mocha test/int
mocha test/unit test/int

文件前缀

test/unit_whatever_spec.js
test/int_whatever_spec.js

然后使用

对特定文件运行mocha
mocha test/unit_*_spec.js
mocha test/int_*_spec.js
mocha

测试名称

在mocha中创建描述测试类型和类/主题的外部块。

describe('Unit::Whatever', function(){})

describe('Integration::Whatever', function(){})

然后使用mochas" grep"运行命名块。参数-g

mocha -g ^Unit::
mocha -g ^Integration::
mocha

使用测试名称时保持文件或目录分离仍然很有用,这样您就可以轻松区分失败测试的源文件。

的package.json

将每个测试命令存储在package.json scripts部分中,以便使用yarn test:intnpm run test:int等方式轻松运行。

{
  scripts: {
    "test": "mocha test/unit test/int",
    "test:unit": "mocha test/unit",
    "test:int": "mocha test/int"
  }
}

答案 1 :(得分:-3)

mocha不支持标签或类别。你理解正确。 您必须创建两个文件夹,单元和集成,并像这样调用mocha

摩卡单位 摩卡整合