如何在依赖模块(node.js)中进行单元测试?

时间:2016-07-06 12:01:19

标签: javascript node.js unit-testing

我有一个带有两个模块的应用程序(Book和User)。书模型看起来像这样:

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

var BookModel = new Schema({

    name: String,
    author: String,
    description: String,
    _user: {type: Schema.Types.ObjectId, ref: 'User'}

});

module.exports = mongoose.model('Book', bookModel);

用户模型:

var mongoose = require('mongoose'),
    bcrypt = require('bcryptjs'),
    Schema = mongoose.Schema;

var userModel = new Schema({

  name: String,
  username: String,
  password: String,

});

module.exports = mongoose.model('User', userModel);

我想在POST方法中进行单元测试(在DB中插入一本书),条件是不允许空名。这就是我在POST方法中所拥有的:

var post = function (req, res) {
    var bookNew = new book(req.body);

    // get paylod from the user's token
    var payload = tokenManager.getPayload(req.headers);

    if (req.body._user)
        delete req.body._user;

    if (!req.body.name) {
        res.status(400);
        res.send("Name is required");
    } else if (payload == null || payload == undefined) {
        res.status(400);
        res.send("Token error");
    } else {
        // store the user id
        bookNew.set('_user', payload.id);

        bookNew.save();
        res.status(201);
        res.send("Book saved");
    }
};

如您所见,我从令牌中获取payload(在用户登录时创建)。我这样做是因为有效负载包含用户ID,然后我将其插入_user(书籍模型中的属性)。

问题在于,如果我进行单元测试以验证书的属性(name)是否已填满,我没有用户来检索有效负载。因此,有效载荷将是未定义的,并且书本单元测试在任何情况下都不会成功。你对我该做什么有什么建议吗?看起来我必须创建一个用户才能测试所有的图书模块...但我不确定这是否是最合适的解决方案。

0 个答案:

没有答案