首页 > 带验证码的登陆如何测试?

带验证码的登陆如何测试?

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 = '';
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模式,允许关闭验证码或者允许自定义对错验证码就可以了

【热门文章】
【热门文章】