erhalte ich diesen Fehler, wenn versuchen, meinen Test ausführen:Fehler UnhandledPromiseRejectionWarning zu Tests versuchen
UnhandledPromiseRejectionWarning: Unhandled promise rejection
(rejection id: 1): TypeError: Cannot read property 'body' of undefine
Ich brauche nur, dass „Captcha“ true Ergebnis. Jede Änderung, die ich auf meinen Code angewendet habe, gibt mir das gleiche Ergebnis, ich habe versucht, die asynchronen Funktionen zu entfernen, aber ich habe immer noch das gleiche Problem.
hier mein Testcode:
import proxyquire from 'proxyquire';
import assert from 'assert';
import chai from 'chai';
const expect = chai.expect;
const loggerStub ={
log:()=>{
return;
}
}
const lodashStub =()=>{
result = undefined;
}
const validationStub = {
validation:()=>{
return Promise.resolve({
data:{
success:true
}
});
}
}
const req = {
body:{
captchaResponse: true
}
}
const res = {
status: (status) => {
return {
send:() => {
return;
}
}
}
}
describe('Probando captcha',()=>{
describe('Validación de captcha',()=>{
it('Captcha validado OK', (done)=>{
const captcha = proxyquire('../src/controllers/captcha',{
'../domain/captcha': validationStub,
'../core/logger': loggerStub,
'lodash': lodashStub
});
const next =() => {
console.log('llegó al next');
expect(captcha.validation()).to.be.true;
done();
}
setTimeout(() => {
captcha.validation(req, res, next);
}, 200);
});
});
});
hier mein Code:
import { get } from "lodash";
import captcha from "../domain/captcha";
import logger from "../core/logger";
require("babel-polyfill");
const validation = async (req, res, next) => {
if (!req.body.captchaResponse) {
logger.log("info", "MISSING CAPTCHA PARAMETERS");
return res.status(422).send();
}
const captchaResponse = req.body.captchaResponse;
console.log(req.body.captchaResponse);
try {
const result = await captcha.validation(captchaResponse);
if (get(result, "data.success")) {
logger.log("info", "CAPTCHA VALIDATION OK");
next();
return;
} else {
logger.log("info", "FAIL CAPTCHA VALIDATION");
return res.status(422).send();
}
} catch (e) {
console.log(e);
logger.log("info", "ERROR CAPTCHA VALIDATION");
return res.status(422).send();
}
};
export default { validation };
Mein package.json Test:
"test": „Mokka --compilers js: babel- register babel-polyfill ./test/ - rekursiv "
Wo ist dein ** Körper-Parser **, mein Herr? Vermutlich vermisst du es. Möge der [Link zwingen] (https://hashnode.com/post/why-am-i-getting-reqbody-as-undefined-in-express-ciu8ecx4k04lhza53vc2hqv64) bei dir sein. – oneturkmen
@oneturkmen ich Body-Parser verwendet, aber das gleiche Ergebnis, console.log (req.body.captchaResponse) zurückgegeben True –
können Sie die folgende Zeile "expect (captcha.validation()). To.be.true" und Sieh es funktioniert – oneturkmen