javascript - 带验证码的登陆如何测试?
本文介绍了javascript - 带验证码的登陆如何测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
1,我用koa开发项目,用mocha,supertest测试。登陆和注册都是有验证码的,而验证码是存在Session中的,我如果要测试就得拿到那个验证码才能通过测试。我的Session是基于cookie的那种,但是cookie是加密的,我能拿到cookie,却还是取不到值。
目前我能想到的办法:
1>开发一个新接口 '/getCaptcha',把session里面的code返回给我,这样我就可以测试了。
2>对于 capthca写死一个值,比如'aaaa',如果等于'aaaa',就通过验证。
感觉两种都不怎么好,最好能直接访问到session.
下面贴出精简后的代码;
app.js
var app = module.exports =require('koa')();
var router = require('koa-router')();
var session = require('koa-session');
var parse = require('co-body');
app.keys = 'segmentfault';
app.use(session(app));
router.get('/captcha',function(){//写入session
this.session.captcha = getRandom(4);//随机数字,模拟图形验证码或短信验证码
this.body = {
success:true
}
});
router.post('/doLogin',function(){
var params = yield parse(this);
if(params.capthca != this.session.captcha){
this.body = {
success:false,
msg:'手机验证码错误'
}
return;
}
//省略校验账号密码
this.body= {
success:true,
msg:'登陆成功'
}
})
test.js
var app = require('../app');//就是上面的文件
var request = require('supertest').agent(app.listen());
describe('test login',function(){
it('get the capthca code',function(){
request.get('/captcha').expect(200).end(function(err,res){
sid = res.headers['set-cookie'].pop().split(';') //可以拿到cookie但是加密过的,所以没法提交登陆
})
})
});
解决方案
定义debug模式,允许关闭验证码或者允许自定义对错验证码就可以了
这篇关于javascript - 带验证码的登陆如何测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文