EXCLUSIVE TESTS

在用例测试集或者用例单元后面加上.only()方法,可以让mocha只测试此用例集合或者用例单元。下面是一个仅执行一个特殊的测试单元的例子:

  1. describe('Array', function () {
  2. describe.only('#indexOf()', function () {
  3. // ....
  4. })
  5. })

注意:在Array用例集下面嵌套的集合,只有#indexOf用例集合会被执行。

下面的这个例子是仅仅执行唯一一个测试单元。

  1. describe('Array', function() {
  2. describe('#indexOf', function() {
  3. it.only('should return -1 unless preset', function () {
  4. // ...
  5. })
  6. it('should return the index when present', function () {
  7. // ...
  8. })
  9. })
  10. })

在v3.0.0版本之前,.only()函数通过字符串匹配的方式去决定哪个测试应该被执行。但是在v3.0.0版本及以后,.only()可以被定义多次来定义一系列的测试子集。

  1. describe('Array', function () {
  2. describe('#indexOf', function () {
  3. it.only('should return -1 unless present', function () {
  4. // this test will be run
  5. })
  6. it.only('should return index when present', function () {
  7. // this test will also be run
  8. })
  9. it('should return -1 if called with a non-Array context', function () {
  10. // this test will not be run
  11. })
  12. })
  13. })

你也可以选择多个测试集合:

  1. describe('Array', function () {
  2. describe.only('#indexOf()', function () {
  3. it('should return -1 unless present', function() {
  4. // this test will be run
  5. });
  6. it('should return the index when present', function() {
  7. // this test will also be run
  8. });
  9. });
  10. describe.only('#concat()', function () {
  11. it('should return a new Array', function () {
  12. // this test will also be run
  13. });
  14. });
  15. describe('#slice()', function () {
  16. it('should return a new Array', function () {
  17. // this test will not be run
  18. });
  19. });
  20. })

上面两种情况也可以结合在一起使用:

  1. describe('Array', function () {
  2. describe.only('#indexOf()', function () {
  3. it.only('should return -1 unless present', function () {
  4. // this test will be run
  5. })
  6. it('should return the index when present', function () {
  7. // this test will not be run
  8. })
  9. })
  10. })

注意:如果有钩子函数,钩子函数会被执行。

除非你是真的需要它,否则不要提交only()到你的版本控制中。