javascript - 带验证码的登陆如何测试?
天蓬老师
天蓬老师 2017-04-11 09:42:28
[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但是加密过的,所以没法提交登陆
        })
        
        
    })
});
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
迷茫

定义debug模式,允许关闭验证码或者允许自定义对错验证码就可以了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号