如何在 Parse 测试中设置经过身份验证的用户?
How set an authenticated user in Parse tests?
我已经为 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.Cloud.run('thread', { user: { id: user.id } });
})
});
所以在云函数中我有 request.user.id
并抛出 Undefined request.user
更多信息:https://github.com/ParsePlatform/parse-server/issues/2488
您在上面的代码中使用 promise 的方式有误:
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);
});
});
我已经为 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.Cloud.run('thread', { user: { id: user.id } });
})
});
所以在云函数中我有 request.user.id
并抛出 Undefined request.user
更多信息:https://github.com/ParsePlatform/parse-server/issues/2488
您在上面的代码中使用 promise 的方式有误:
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);
});
});