在写测试用例的时候,通常是测试成功场景的预期,例如我上一篇中的分页测试:
it('success to test lottery history first paging', function(done) {
async.series({
action: function(callback) {
base.get('/api/activity/lottery/winner?page=1&limit=1', {
token: 'basic-valid'
}).then(function(results) { //进入api之后的场景
assert.equal(results.result.length, 1);
assert.equal(results.result[0].id, firstReplyId);
done();
}, function(err) { //进入api失败的场景
console.error(err);
callback(new Error('can not get lottery history first paging'));
});
}
}, function(err, results) {
done(err);
});
});
这其中对成功和失败分别进行了描述和预期。
那么,当我们要测试api不能访问的时候的场景呢? 比如说token不存在或者无效&&id什么的不正确 ?
这时候的测试用例对成功和失败的描述和测试就会有所不同:
it('failed to get lottery history without token', function(done){
async.series({
action: function(callback){
base.queryAll('/api/activity/lottery/winner', {token: 'basic-none'}) // 没有token
.then(function() { //当你们有token,但是访问竟然成功了,这显然是个错误
callback(new Error("should not get lottery history"));
}, function(err){ //没有token访问api失败才是正常的
done();
});
}
}, function(err, results){
done(err);
});
});
此时,在访问api成功的时候,这其实是我们预期的错误,这个时候我们的回调应该是一个错误;在访问api失败的时候,这才是我们预期的正常情况,回调应该是成功的相应函数。即:失败才是正确的。
所以,在测试的时候,不能一味的看执行成功与否来进行测试,一定要明确自己的预期才能做出正确的测试用例。