私はいくつかのコードをテストするためにLabを使用しようとしています。しかし、私は正しいペイロードを置く何らかの理由で私のコードは何もしません。約束は返さを取得していないようです:hapijsが正しい応答を返さないserver.inject
'use strict';
const Server = require('../server');
const options = {
method: 'POST',
url: '/api/users',
payload: JSON.stringify({ mobile: '3342329224' })
};
Server.inject(options, (response) => {
if (response) {
console.log(response.payload);
}
else {
console.log('Nada');
}
});
そこにはペイロードがありませんか、それは私の攘夷の検証と一致しないように、私は、コードを編集する場合、それは私が応答を取得:
{"statusCode":400,"error":"Bad Request","message":"child \"mobile\" fails because [\"mobile\" must be larger than or equal to 10]","validation":{"source":"payload","keys":["mobile"]}}
module.exports = {
method: 'POST',
path: '/api/users',
config: {
auth: false,
handler: (request, reply) => {
//looks up payload in db otherwise creates entry
User.findOne({
mobile: request.payload.mobile
}, (err, user) => {
if (err) {
throw err;
}
if (user) {
// uses twillio to send code
sendVerificationText(user, (err, result) => {
if (err){
throw err;
}
if (result === true) {
// this is what I expect to happen when testing
reply('code sent').code(201);
}
else {
throw Boom.badRequest(err);
}
});
}
else {
// the user should exist so....
const user = new User();
user.mobile = request.payload.mobile;
user.admin = false;
user.save((err, user) => {
if (err) {
throw Boom.badRequest(err);
}
sendVerificationText(user, (err, result) => {
if (err){
throw err;
}
if (result === true) {
reply('code sent').code(201);
}
else {
throw Boom.badRequest(err);
}
});
});
}
});
},
// Validate the payload against the Joi schema
validate: {
payload: createUserSchema
}
}
};
私はこのコードは、私がサーバーを実行し、手でAPIをテストするときに動作することを言及する必要があります。私はそれを理解することはできません。
私は、クローム開発ツールその実際のリクエストをサーバーに送信し、手作業でテストするために使用しているリクエストと比較します。 生成されるリクエストでは、おそらく何かが少し異なります。 –
私はhapijsに精通していません。しかし、ドキュメントを読むことからの私の最初の推測は、おそらくあなたのサーバーコードは:要求する必要があります。モバイルの代わりにrequest.payload.mobile?ちょうど私は道を離れることができると思います。 –
私は途中です。私は少し研究を行い、同様のプロジェクトを作成しようとしました。私は、ジョイの検証がハングアップするという問題を発見しました。その検索での回答の投稿。 –