尝试根据循环中的条件跳过测试用例

时间:2016-12-16 16:37:17

标签: javascript node.js mocha

我有以下测试代码,我的意图是在循环通过对象时我想检查条件并第一次运行并将go_on值分配给false并在false时跳过测试。我测试了这段代码,没有通过对象循环,它的工作原理。我使用nodejs和mocha测试框架。

var s={a:c,b:a};

Object.keys(s).forEach(function (x){
  before(function( done1 ){
    if (go_on==true) {        
      done1();
    }
    else this.skip();
  });
  it('Exit if go_on false', function (done) {

    go_on=false;
    console.log(go_on);

    done();
  });
});

2 个答案:

答案 0 :(得分:0)

您似乎在go_on=false中设置了it,但在before中使用了beforeit代码出现在go_on代码之前,因此it中设置的s的值永远不会被使用。

此外,您实际上并未在任何地方使用xDataInputStream inStrm = file.getContent(); ZMsg msg = ZMsg.load(inStrm); msg.send(sender);

答案 1 :(得分:0)

如果我理解正确,您试图根据数据条件跳过一些测试。您的基本想法是正确的,但您需要使用beforeEach()before()before()回调在整个测试套件之前执行,而beforeEach()回调在EACH测试之前运行。这是一个有效的例子:

describe('conditional tests', function() {
  var go_on = true;
  var s={ a:'1', b:'2', c:'3'};

  Object.keys(s).forEach(function (x){
    beforeEach(function( done ){
      if (go_on === true) {
        done();
      }
      else this.skip();
    });
    it('test for ' + x, function (done) {
      if (x === 'b') {
        go_on=false;
        console.log('stopping tests');
      }
      done();
    });
  });
});

结果输出为:

$ mocha test.js

  conditional tests
    ✓ test for a
stopping tests
    ✓ test for b
    - test for c


  2 passing (13ms)
  1 pending