使用Mocha时,在模型beforeCreate中发现Loopback Context为null

时间:2015-02-12 09:29:37

标签: node.js loopbackjs

我有一个模型,可以在beforeCreate中访问上下文对象(获取currentUser)。

myModel.beforeCreate = function(next, md) {

    var Category = md.app.models.Category;

    var ctx = loopback.getCurrentContext();
    var currentUser = ctx && ctx.get('currentUser');
   ...
  });

当我通常从资源管理器访问它但我尝试在单元测试中使用mocha访问它时,它可以正常工作

我收到错误,因为未设置currentUser。

所以,当我尝试设置currentUser时,我不会在测试中获得上下文对象。

var ctx = loopback.getCurrentContext();
        if (ctx) console.log("CTX exists");

这里ctx为空。

请建议我出错的地方。

干杯 拉吉

1 个答案:

答案 0 :(得分:0)

我认为如果您使用loopback-testing模块,那么您将更容易获得成功。具体来说,givenLoggedInUser函数为您的测试创建一个用户并将该用户记录下来,同时创建一个保存的令牌。

var lt = require('loopback-testing');
var credentials = { email: 'user@example.com', password: 'pwd' }
lt.givenLoggedInUser(credentials, 'user');
it('should have a logged in user', function (done) {
  if (loopback.getCurrentContext()) {
    console.log("CTX exists", this.user);
  }
});

这也应该创建您需要的当前上下文。在这里查看其余的中间件测试以获得更多帮助:https://github.com/strongloop/loopback/blob/master/test/rest.middleware.test.js#L128