问题描述
对于我的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: "[email protected]",
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中对模型进行单元测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!