I recommend you Mocha, it's from the same guy of expressjs. It supports test coverage for you code, hooks before, after, each and of course it supports async code.
I use it in combination with should.js or even chai.js
A test in mocha looks like, the code is from my own test where I'm using superagent, in order to make requests.
it('requests a permission with valid ticket', function (done){
agent
.post(route.server + '/preq')
.set('Content-Type', 'application/json')
.set('Authorization', 'Bearer ' + ACCESSTOKEN)
.send({ticket: TICKET})
.end(function (req,res) {
res.should.have.property('statusCode').that.equals(201);
var location = .....
res.headers.should.have.property('location').that.is.equal(location);
done();
});
})