Es ist ein Fehler, wie Sie verspricht in Ihrem Code verwenden oben:
user.save();
Promise.resolve()
.then(function() {
return Parse.Cloud.run('thread', { user: { id: user.id } });
})
Sie möchten nicht Promise.resolve().then()
verwenden. Sie würden wollen user.save().then()
Unten sind zwei Sätze von Arbeitseinheit Test, dass ich denke, Übungen, was Sie wollen.
dieser erstes gibt den Benutzer-ID als Parameter:
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);
});
});
und diese zweite Reihe von Tests zeigt, wie ein authentifizierter Benutzercode Wolke übergeben wird.
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);
});
});
Dank, ich brauchte es im Test zu schicken, nicht, wenn es der Benutzer die aktuelle – MaicolBen
ok, Antwort mit einem tatsächlichen Test Idiom I wies mit dem Code bearbeitet. –
Super Arbeit! aber das hebt die wirkliche Funktion auf, und ich kann das echte nicht testen. Auch wenn Sie '{user: {id: user.id}}' senden, wird es in der Cloud-Funktion in 'request.params.user.id', nicht in' request.user' gelesen. – MaicolBen