在编写代码时遇到问题。我想减少测试中使用的代码量,但是存在问题。
我有考试,但他没有工作:
var repeatTests = function(value){
it ('test1 use value', function(done){
console.log (value) // return undefined
...
}
it ('test2 use value', function(done){
console.log (value) // return undefined
...
}
...
}
describe ('test', function(){
var _value
before(function(done){
asyncFunction(function(err, value){
...
_value = value
...
done();
}
})
repeatTests(_value) // value is undefined
})
但这有效:
describe ('test', function(){
var _value
before(function(done){
asyncFunction(function(err, value){
...
_value = value
...
done();
}
})
it ('test1 use value', function(done){
console.log(_value); // return _value
...
}
it ('test2 use value', function(done){
console.log(_value); // return _value
...
}
...
})
我知道为什么会这样。请告诉我,我该如何实现测试的第一个版本。
答案 0 :(得分:0)
repeatTests函数与之前同时调用,因此将始终未定义。
答案 1 :(得分:0)
您可能想要使用async.waterfall
。它看起来像这样:
var repeatTests = function(value){
it ('test1 use value', function(done){
console.log (value) // return undefined
...
}
it ('test2 use value', function(done){
console.log (value) // return undefined
...
}
...
}
describe ('test', function(){
var _value
async.waterfall([
before(function(done){
asyncFunction(function(err, value){
...
_value = value
...
done();
}
}),
async.apply(repeatTests,_value) //Apply for passing the parameter to the repeatTests function
],
function(err){
console.log('End of all');
}
})