Unit testing 如何在meteor中进行单元测试,将文档添加到集合中?模拟用户ID

Unit testing 如何在meteor中进行单元测试,将文档添加到集合中?模拟用户ID,unit-testing,meteor,mocha.js,Unit Testing,Meteor,Mocha.js,谢谢你的帮助- 我想知道我的应用程序是否使用Meteor中的单元测试成功地将文档添加到数据库中。我使用的是practicalmeteor:mocha and chai。我遇到的问题是,我不知道如何模拟this.userId,它一直告诉我我没有登录 it('将议程草案文档插入集合',函数(){ //TODO:要插入到集合中的模拟文档 //TODO:模拟用户ID和议程。插入 this.userId=“不是空字符串”; console.log(“在规范之前,更改this.userId:+this.u

谢谢你的帮助-

我想知道我的应用程序是否使用Meteor中的单元测试成功地将文档添加到数据库中。我使用的是practicalmeteor:mocha and chai。我遇到的问题是,我不知道如何模拟this.userId,它一直告诉我我没有登录

it('将议程草案文档插入集合',函数(){
//TODO:要插入到集合中的模拟文档
//TODO:模拟用户ID和议程。插入
this.userId=“不是空字符串”;
console.log(“在规范之前,更改this.userId:+this.userId)//不是空字符串”
Meteor.call('createAgenda',mockAgenda,function(res){
log(“带有响应的回调:+res);//您未登录。[未登录]
console.log(“this.userId:+this.userId)//未定义
}
}
备注 我想发表一篇评论,但声誉不够。下面是一些评论。由于您在服务器上进行测试,您可以在不回调的情况下调用Meteor方法。这将导致同步执行并简化测试。否则,您必须通过调用done函数让测试知道它已完成n在您的回调中,请参阅

使用 您可以调用有效的方法,并使用\u execute函数提供它们执行的上下文。下面是从中选取的示例。有关更多示例,您可以查看它们的和测试

it('使列表私有并更新TODO',函数(){
//检查初始状态是否为公共
assert.isFalse(Lists.findOne(listId.isPrivate());
//设置方法参数和上下文
const methodInvocation={
用户ID
};
常量args={
李斯蒂德
};
//将列表设置为私有会将userId添加到todo中
makePrivate.\u执行(methodInvocation,args);
assertListAndTodoArePrivate();
//将列表公开将删除它
makePublic.\u执行(methodInvocation,args);
assert.isUndefined(Todos.findOne(todoId.userId));
assert.isTrue(Todos.findOne(todoId.editabby(userId));
});
备注 我想发表一篇评论,但声誉不够。下面是一些评论。由于您在服务器上进行测试,您可以在不回调的情况下调用Meteor方法。这将导致同步执行并简化测试。否则,您必须通过调用done函数让测试知道它已完成n在您的回调中,请参阅

使用 您可以调用有效的方法,并使用\u execute函数提供它们执行的上下文。下面是从中选取的示例。有关更多示例,您可以查看它们的和测试

it('使列表私有并更新TODO',函数(){
//检查初始状态是否为公共
assert.isFalse(Lists.findOne(listId.isPrivate());
//设置方法参数和上下文
const methodInvocation={
用户ID
};
常量args={
李斯蒂德
};
//将列表设置为私有会将userId添加到todo中
makePrivate.\u执行(methodInvocation,args);
assertListAndTodoArePrivate();
//将列表公开将删除它
makePublic.\u执行(methodInvocation,args);
assert.isUndefined(Todos.findOne(todoId.userId));
assert.isTrue(Todos.findOne(todoId.editabby(userId));
});