Parse platform 如何在解析测试中设置经过身份验证的用户?
我已经为Parse配置了一些测试,但我不知道如何在Parse platform 如何在解析测试中设置经过身份验证的用户?,parse-platform,Parse Platform,我已经为Parse配置了一些测试,但我不知道如何在Parse.Cloud.run中设置经过身份验证的用户: it('set user authenticated', function(done) { var user = new Parse.User({username: 'example2', password: 'example'}); user.save(); Promise.resolve() .then(function() { return Parse.Clo
Parse.Cloud.run
中设置经过身份验证的用户:
it('set user authenticated', function(done) {
var user = new Parse.User({username: 'example2', password: 'example'});
user.save();
Promise.resolve()
.then(function() {
return Parse.Cloud.run('thread', { user: { id: user.id } });
})
});
因此,在云函数中,我有request.user.id
,它抛出未定义的request.user
更多信息:在上面的代码中使用承诺时出现错误:
user.save();
Promise.resolve()
.then(function() {
return Parse.Cloud.run('thread', { user: { id: user.id } });
})
您不想使用Promise.resolve().then()
。您需要user.save().then()
下面是两组工作单元测试,我认为它们是您想要的
第一个将用户id作为参数传递:
describe('pass parameters to cloud code', () => {
// set up the cloud code function
beforeEach(() => {
Parse.Cloud.define('thread', (request, response) => {
// just return the user id that passed in so we can test it.
response.success(request.params.user.id);
});
});
it('should pass parameters', (done) => {
const user = new Parse.User({
username: 'example2',
password: 'example'
});
user.save()
.then(() => Parse.Cloud.run('thread', { user: { id: user.id } }))
.then((result) => expect(result).toBe(user.id))
.then(done)
.catch(done.fail);
});
});
第二组测试显示了如何将经过身份验证的用户传递给云代码
describe('user in cloud code unit test', () => {
beforeEach(() => {
Parse.Cloud.define('thread', (request, response) => {
const result = request.user
? request.user
: 'no user set';
response.success(result);
});
});
it('should not have a user', (done) => {
Parse.Cloud.run('thread')
.then(result => expect(result).toBe('no user set'))
.then(done)
.catch(done.fail);
});
it('should get the logged in user', (done) => {
Parse.User.signUp('Alice', 'Password', { name: 'value' })
// note that we don't have to pass the logged in user
// if there is a logged in user, it'll be in request.user
.then(() => Parse.Cloud.run('thread'))
.then(userAsResult => expect(userAsResult.get('username', 'Alice')))
.then(done)
.catch(done.fail);
});
});
谢谢,我需要在测试中发送它,而不是检查它是否是当前用户OK,使用我指出的代码习惯用法用实际测试编辑答案。真棒!但这会覆盖实际函数,我无法测试实际函数。另外,如果您发送
{user:{id:user.id}
,它将在request.params.user.id
的云函数中读取,而不是在request.user
中读取。用户将要测试的代码拉入函数,然后将其导出。这样,在测试中,您可以Parse.Cloud.define('toTest',exportedFunction)
并且您仍然可以在定义exportedFunction
的文件中Parse.Cloud.define('blah',exportedFunction)
。如果我将函数作为分离函数而不是云函数进行测试,这可能会起作用,因此我必须将用户作为函数的参数传递。这不是我期望的答案,但它是有效的,所以我会将其标记为正确的,谢谢!