无法在Sails.js中对模型进行单元测试 [英] Cannot unit test my model in sailsjs

查看:52
本文介绍了无法在Sails.js中对模型进行单元测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

For my sails app I'm using the following code to unit test the User model but got the error message:

'TypeError:对象#没有方法'create'

'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);
        });
      });
  });

在我看来帆正确举起了,导致create方法不可用的问题是什么?

As it seems to me that sails is correctly lifted, what is the problem causing the create method not to be available ?

推荐答案

删除第一行:

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

一旦Sails应用程序解除,您将自动获得模型,请参见

Once Sails app is lifted, you will have your models available automatically, see here, for example.

在您的情况下,您的第一行将覆盖由Sails.js否则构建的User模型,这就是为什么即使您有一个对象也不是水线模型的原因.

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.

这篇关于无法在Sails.js中对模型进行单元测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆