Javascript Meteor中Jasmine的单元测试注册用户方法
嘿,我试图对一个方法进行单元测试,但是当我使用spyOn Accounts.createUser时,我得到了一个错误“error:createUser()方法不存在”,然而当我使用spyOn Meteor.user时,我没有任何问题,这是我目前为止得到的结果 server/methods/user.jsJavascript Meteor中Jasmine的单元测试注册用户方法,javascript,unit-testing,meteor,jasmine,user-accounts,Javascript,Unit Testing,Meteor,Jasmine,User Accounts,嘿,我试图对一个方法进行单元测试,但是当我使用spyOn Accounts.createUser时,我得到了一个错误“error:createUser()方法不存在”,然而当我使用spyOn Meteor.user时,我没有任何问题,这是我目前为止得到的结果 server/methods/user.js Meteor.methods({ 'registerUser' : function (options) { if(Meteor.user()) thr
Meteor.methods({
'registerUser' : function (options) {
if(Meteor.user())
throw new Meteor.Error(403, "Account has already been registered, log out to create a new account");
if(options.password.length < 8)
throw new Meteor.Error(403, "Password must have at least 8 characters");
var id = Accounts.createUser(options);
if(options.type === "b") Roles.addUsersToRoles(id, 'user-b');
else Roles.addUsersToRoles(id, 'user-c');
return 0;
}
});
Accounts.validateNewUser(function (user) {
if (user.emails[0].address && user.emails[0].address.length >= 5)
return true;
throw new Meteor.Error(403, "Invalid email address");
});
Accounts.onCreateUser(function(options, user) {
if(options.type === "b"){
var key = RegKey.findOne({ key: options.key, valid: true });
if(key) RegKey.update({ _id: key._id },{ valid: false });
else throw new Meteor.Error(403, "Invalid Code");
}
return user;
});
测试Jasmine单元测试在Meteor上下文之外运行。这意味着您的测试代码是快速的、隔离的,并且只测试您希望它们测试的东西。但应用程序中预期Meteor会出现的代码无法正常运行 Jasmine通过创建“存根”来修复它
beforeEach(function () {
MeteorStubs.install();
});
afterEach(function () {
MeteorStubs.uninstall();
});
对于服务器单元测试,这是自动完成的。如果您想编写在浏览器中运行的单元测试,您需要自己为客户机测试做这件事
如果我们看看他们的模拟服务示例
我们可以看到缺少“createUser()”
stubFactories.Accounts = function () {
var Meteor = stubFactories.Meteor();
return {
emailTemplates: { enrollAccount: emptyFn },
config: emptyFn,
urls: {},
registerLoginHandler: emptyFn,
onCreateUser: emptyFn,
loginServiceConfiguration: new Meteor.Collection('loginserviceconfiguration'),
validateNewUser: emptyFn
};
})
与Meteor.user不同,它是定义的
stubFactories.Accounts = function () {
var Meteor = stubFactories.Meteor();
return {
emailTemplates: { enrollAccount: emptyFn },
config: emptyFn,
urls: {},
registerLoginHandler: emptyFn,
onCreateUser: emptyFn,
loginServiceConfiguration: new Meteor.Collection('loginserviceconfiguration'),
validateNewUser: emptyFn
};