The code below will effectively turn your Asynchronous Q promises synchronous so that they are easier to test.
beforeEach(function () {
sinon.stub(Q.xhr, 'post').returns(Q.resolve({myAwesome: 'response data goes here'}));
sinon.stub(process, 'nextTick').yields();
});
afterEach(function () {
Q.xhr.post.restore();
process.nextTick.restore();
});