From Vows docs :
» A topic is either a value or a function which can execute asynchronous code.
In your example topic
is assigned to a function, so vows is expecting asynchronous code.
Simply rewrite your topic as follow :
var vows = require('vows'),
assert = require('assert');
function giveMeUndefined(){
return undefined;
}
vows.describe('Test vow').addBatch({
'When the topic is undefined': {
topic: giveMeUndefined(),
'should return the default value of undefined.': function(topic) {
assert.isUndefined(topic);
}
}
}).export(module);