Cannot unit test my model in sailsjs
mocha.js, node.js, sails.js, unit-testing
Solution
Remove the first line:
var User = require('../../api/models/User');
Once Sails app is lifted, you will have your models available automatically, see here, for example.
And in your case, your first line overrides the `User` model which would be otherwise constructed by Sails.js, that's why even though you have an object it's not a Waterline model.
Problem
For my sails app I'm using the following code to unit test the User model but got the error message: 'TypeError: Object # has no method 'create'' ``` var User = require('../../api/models/User'); var Sails = require('sails'); console.log(User); describe("User Model:", function() { // create a variable to hold the instantiated sails server var app; // Global before hook before(function(done) { // Lift Sails and start the server Sails.lift({ log: { level: 'error' }, }, function(err, sails) { app = sails; done(err, sails); }); }); // Global after hook after(function(done) { app.lower(done); }); describe("Password encryption", function() { describe("for a new user", function() { var user; before(function (cb) { var userData = { email: "testuser@sails.com", password: "test_password", passwordConfirmation: "test_password" }; User.create(userData, function (err, newUser) { if (err) return cb(err); user = newUser; cb(); }); }); it("must encrypt the password", function() { user.must.have.property('encryptedPassword'); user.must.not.have.property('password'); user.must.not.have.property('passwordConfirmation'); }); after(function (cb){ user.destroy(function (err) { cb(err); }); }); }); ``` As it seems to me that sails is correctly lifted, what is the problem causing the create method not to be available ?