Mocha failed assertion causing timeout

expect is throwing an error that is being caught by the promise. Adding a catch condition that calls done fixes this.

it('should create new user', function(done) {
    userService.create(user).then(function(model) {
        expect(model.id).to.be(1); //created user ID
        done();
    }).catch(function(e) {
        done(e);
    })
});

Shawn's answer works, but there is a simpler way.

If you return the Promise from your test, Mocha will handle everything for you:

it('should create new user', function() {
  return userService.create(user).then(function(model){
    expect(model.id).to.be(1); //created user ID
  });
});

No done callback needed!