如何更新用户.用于在Meteor中进行Jasmine测试的服务
How to update user.services for Jasmine testing in Meteor
我试图模拟出一个用户来测试我的应用程序,我已经到了可以创建一个测试用户并将其登录到我的应用程序的镜像实例的地步。
我需要比较人们帐户的gmail地址,为了测试这个功能,我想在Meteor用户帐户数据库(这是accounts-google包存储它的地方,我还不需要模拟出整个用户帐户)的user.services.google.email下添加一个测试电子邮件地址。
我不能弄清楚的是如何附加这些信息,而不是只是覆盖已经存在的内容,这是我的代码看起来像:
if (Meteor.users.find().count() === 0) {
var testUserDetails = {
email: 'testEmail@gmail.com',
password: 'testPassword'
};
console.log("Creating the Test User");
var newUserId = Accounts.createUser(testUserDetails);
Meteor.users.update({
_id: newUserId
}, {
$set: {
services: {
google: {
email: "testEmail@gmail.com"
}
}
}
});
} else {
console.log("There are already users in the Test database");
}
console.log('***** Finished loading default fixtures *****');
},
用户是这样的:
{
"_id" : "Dw2xQPDwKp58RozC4",
"createdAt" : ISODate("2015-07-30T04:02:03.261Z"),
"services" : {
"password" : {
"bcrypt" : "asdfasdfasdfdsafsadfasdsdsawf"
},
"resume" : {
"loginTokens" : [ ]
}
},
"emails" : [
{
"address" : "testEmail@gmail.com",
"verified" : false
}
]
}
现在$set
只是重写了服务中的所有内容,并且没有用于mongo或js的$push
操作,那么我应该如何去做呢?我应该使用对象并手动解析它吗?
*注意我也尝试过使用流星的Accounts.onCreateUser(function(options, user)
,但面临同样的问题。
[…[…]
当然,有一个$push
操作符,它将指定的值附加到数组中。
然而,我认为你要做的是更新一个文档,并保留所有已经设置的值。
你可以这样做:
- 首先查询文档以获取要设置的对象。
- 更新相应的对象。
- 执行MongoDB update操作,设置新对象。
var user = Meteor.users.findOne({
_id: newUserId
});
var servicesUserData = user.services;
servicesUserData.google.email = "your_new_email@gmail.com";
Meteor.users.update({
_id: newUserId
}, {
$set: {
"services": {
servicesUserData
}
}
});
相关文章:
- 如何使用Jasmine测试Knockout.js点击绑定
- 如何在jasmine测试中为有角度的项目注入依赖项
- Jasmine:测试setTimeout函数会抛出一个错误
- 如何通过 phantomjs 可靠地执行利用 requirejs 的 Jasmine 测试
- 使用jasmine测试JavaScript回调函数
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 用jasmine测试JavaScriptUI的最佳方法
- 如何使用jasmine测试done和failedDeferredObject
- 在CoffeeScript文件上运行Jasmine测试时,对象未定义错误
- 使用 Jasmine 测试主干视图时,浏览器页面不断刷新
- 使用 Jasmine 测试对象中的事件处理程序
- 在 Jasmine 测试中无法访问 Angular 服务函数
- 如何正确引用Jasmine测试夹具中的图像
- jasmine测试抱怨undefined不是一个对象
- 我怎么能用jasmine测试这个代码呢
- 如何使用jasmine测试ajax响应
- 如何模拟ajax对Jasmine测试的调用
- AngularJS Jasmine测试:类型错误:'未定义'不是对象
- Jasmine测试url的javascript函数
- 使用Jasmine测试TypeScript类