user1772306
user1772306

Reputation: 469

NodeJS testing Database with Mocha and should.js

I'm testing my NodeJS application with mocha and should. While the first test runs smoothly the second fails (error equals null). In both tests if got a valid user within the callback (both have the same id in mongoose). The tests obviously don't wait for the database action to take happen.

describe("User", function(){
    before(function (done) {
        // clear database
        model.UserModel.collection.remove(done);
    })

    it("should save", function(done){
        user1.save(function(error, user){
            should.not.exist(error);
            user.should.have.property("first_name", "Rainer");
            done();
        })
    })

    it("should not save duplicate user", function(done){
        user1.save(function(error, user){
            should.exist(error);
            done();
        })
    })
})


It also doesn't work when I place the second test in the callback of the first test. I want to test for a duplicate key error, but can't achieve it with the given situation.

Upvotes: 1

Views: 651

Answers (1)

robertklep
robertklep

Reputation: 203231

Looks like you're re-using the user1 document.

In Mongoose, you're allowed to save the same document again (for instance, after having made changes to it); it won't mean that a new document is saved, just that the old one will be updated.

If you want to test properly, you should create a new document instance (with the same properties as the first) in your second test.

Upvotes: 1

Related Questions