您的位置:首页 > 其它

用mocha写分页的测试用例

2015-09-11 19:02 190 查看
mocha的异步API测试是一个非常好的功能,能让我们直接在terminal测试API是否有效,不需要在浏览器一个个访问,并且还可以对非法参数、非法操作等等加以检测。

一下是一个非常基本的分页测试用例写法:

var assert = require("assert")

var async = require("async");

module.exports = function() {

describe('lottery api test', function() {

//没有token不能获取

it('failed to get without token', function(done){ //外部函数

async.series({

action: function(callback){

query('/api的路径', {token: 'basic-none'})//query方法需要自己定义

.then(function() { //进去之后代表进入api成功,完成。

done();

}, function(err){ //进入api失败

callback(new Error("should not get "));

});

}

}, function(err, results){ //外部函数执行失败

done(err);

});

});

//有token可以获取

it('success to get with token', function(done){

async.series({

action: function(callback){

query("/api的路径", {token: 'basic-valid'})

.then(function() {

done();

}, function(err) {

console.info(err);

callback(new Error('should able to get '));

});

}

}, function(err, results) {

done(err);

});

});

//获取

it('success to get lottery history', function(done) {

async.series({

action: function(callback) {

base.get('/api的路径', {

token: 'basic-valid'

}).then(function(results) {

done();

}, function(err) {

console.info(err);

callback(new Error('can not get '));

});

}

}, function(err, results) {

done(err);

});

});

//测试分页,基本思路,利用分页分别得到page、limit的前两个数据,并进行比较,如果相等即分页逻辑正确。

//参数解释:page表示当前的页数,limit为每页条数的限制(即每页有limit条记录)

var firstReply;

var secReply;

it('success to get paging', function(done) {

async.series({

action: function(callback) {

base.get('/api的路径?page=1&limit=2', { //获取第一页,每页两条数据,即前两条数据,分别赋值给firstReply和secReply

token: 'basic-valid'

}).then(function(results) {

firstReply = results.result[0].id;

secReply = results.result[1].id;

done();

}, function(err) {

console.info(err);

callback(new Error('can not paging'));

});

}

}, function(err, results) {

done(err);

});

});it('success to test first paging', function(done) {

async.series({

action: function(callback) {

base.get('/api的路径?page=1&limit=1', { //获取第一页,每页一条数据,即第一条数据,

token: 'basic-valid'

}).then(function(results) {

assert.equal(results.result.length, 1);//api获取的结果是否唯一

assert.equal(results.result[0].id, firstReply);//与firstReply比较

done();

}, function(err) {

console.info(err);

callback(new Error('can not get first paging'));

});

}

}, function(err, results) {

done(err);

});

});it('success to get second paging', function(done) {

async.series({

action: function(callback) {

base.get('/api的路径?page=2&limit=1', {//同上

token: 'basic-valid'

}).then(function(results) {

assert.equal(results.result.length, 1);

assert.equal(results.result[0].id, secReply);

done();

}, function(err) {

console.info(err);

callback(new Error('can not get second paging'));

});

}

}, function(err, results) {

done(err);

});

});

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: