错误 UnhandledPromiseRejectionWarning 尝试测试
Error UnhandledPromiseRejectionWarning trying to testing
我在尝试 运行 我的测试时遇到此错误:
UnhandledPromiseRejectionWarning: Unhandled promise rejection
(rejection id: 1): TypeError: Cannot read property 'body' of undefine
我只需要 "captcha" 得到真实的结果。我对我的代码应用的任何更改都会得到相同的结果,我尝试删除异步函数,但我仍然遇到同样的问题。
这里是我的测试代码:
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);
});
});
});
这是我的代码:
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 };
我的package.json测试:
"test": "mocha --compilers js:babel-register babel-polyfill ./test/ --
递归
next ()
定义中的以下行导致问题
expect(captcha.validation()).to.be.true;
您需要将 req, res, next
包含到 captcha.validation()
中,或者完全删除此行。
为什么? 因为函数需要三个参数,当它得到 none 时,你在 [=20] 上得到 undefined =]req.body.
我在尝试 运行 我的测试时遇到此错误:
UnhandledPromiseRejectionWarning: Unhandled promise rejection
(rejection id: 1): TypeError: Cannot read property 'body' of undefine
我只需要 "captcha" 得到真实的结果。我对我的代码应用的任何更改都会得到相同的结果,我尝试删除异步函数,但我仍然遇到同样的问题。
这里是我的测试代码:
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);
});
});
});
这是我的代码:
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 };
我的package.json测试:
"test": "mocha --compilers js:babel-register babel-polyfill ./test/ -- 递归
next ()
定义中的以下行导致问题
expect(captcha.validation()).to.be.true;
您需要将 req, res, next
包含到 captcha.validation()
中,或者完全删除此行。
为什么? 因为函数需要三个参数,当它得到 none 时,你在 [=20] 上得到 undefined =]req.body.