无法在sailsjs中对我的模型进行单元测试

时间:2014-01-10 15:48:31

标签: node.js unit-testing mocha sails.js

对于我的sails应用程序,我使用以下代码对User模型进行单元测试,但收到错误消息:

'TypeError:Object#没有方法'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);
        });
      });
  });

在我看来,帆被正确解除了,导致创造方法不可用的问题是什么?

1 个答案:

答案 0 :(得分:14)

删除第一行:

var User = require('../../api/models/User');

解除Sails应用后,您将自动提供模型,例如,请参阅here

在您的情况下,您的第一行会覆盖由{Sails.js构建的User模型,这就是为什么即使您有一个对象,它也不是Waterline模型。