我有以下测试代码,我的意图是在循环通过对象时我想检查条件并第一次运行并将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();
});
});
答案 0 :(得分:0)
您似乎在go_on=false
中设置了it
,但在before
中使用了before
。 it
代码出现在go_on
代码之前,因此it
中设置的s
的值永远不会被使用。
此外,您实际上并未在任何地方使用x
或DataInputStream 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