Faced with the problem when writing code. I want to reduce the amount of code used in the tests, but there are problems.
I have test, but he don't worked:
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
})
But this worked:
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
}
})
I know why this is happening. Please tell me, how do I implement the first version of the test.
How about something like this?
var _value;
var asyncFunction = function(fn) {
setTimeout(function() {
fn(null, 'Your value!');
}, 0);
};
var repeatTests = function() {
it('test1 use value', function(done){
console.log(_value)
done();
});
it('test2 use value', function(done) {
console.log(_value);
done();
});
}
describe('test', function() {
before(function(done) {
asyncFunction(function(err, value) {
_value = value;
done();
});
});
repeatTests();
});
$ mocha example.js
test
Your value!
✓ test1 use value
Your value!
✓ test2 use value
2 passing (12ms)
Thanks! It's working!
Most helpful comment
How about something like this?