我试图测试具有特定角色的登录用户是否可以更改其他用户角色。我正在使用meteor-jasmine与PhantomJS(但我也尝试过针对流星茉莉的默认浏览器Chrome)。
我创建了一个管理员用户(管理员角色自动分配给创建的第一个用户)和我的fixutes中的标准用户进行测试。然后,我在beforeEach
。
describe('Users with manage-user role', function() {
beforeEach(function(done) {
Meteor.loginWithPassword('mgoldsborough@gmail.com', '12345678', function(error) {
console.log('Logged in as admin');
done();
});
});
我在afterEach
注销了管理员。
afterEach(function(done) {
Meteor.logout(function() {
console.log('Logged out');
done();
});
});
在测试中,我想转到路径,向用户添加角色,然后检查更改是否反映在数据库中。 newUser._id
我的日志记录未定义。我还尝试仅记录newUser
,但这也是未定义的。
it('should be able to change user roles', function(done) {
Router.go('users');
Tracker.afterFlush(function() {
var newUser = Meteor.users.findOne({email: 'devon@radworks.io'});
console.log('New user id: ' + newUser._id);
$('#user-' + newUser._id + '-roles').val('manage-users');
expect(Roles.userIsInRole(newUser, 'manage-users')).toBe(true);
expect(Roles.userIsInRole(newUser, 'edit-any')).toBe(false);
done();
});
});
});
我为此测试收到错误:
错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调。
此外,Chrome抱怨newUser
未定义:
Tracker afterFlush功能的异常:无法读取属性' _id'未定义的
为什么我的newUser变量未定义?为什么我的测试超时?有没有更好的方法来测试这个功能?
答案 0 :(得分:-1)
在Tracker.afterFlush声明之后移动Router.go()。