博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端临床手札——单元测试
阅读量:6956 次
发布时间:2019-06-27

本文共 2535 字,大约阅读时间需要 8 分钟。

最近博主工作是和另一枚后端合作,但是经常发现他写的接口出错,苦逼连连。感觉不能这样下去就学写一下单元测试,等他更新代码我都跑一遍确认一下,这样工作安心多了。

经过博主一番查找,貌似被推荐比较多的有mochachai,下面记录简单使用的笔记,其他不懂的google吧!:)

由于测试的项目是前端项目,测试的方式也是打开页面。下面先说明一下目录结构

test/    vendor/        chai-as-promised.js //后面介绍是怎么使用        chai.js        mocha.css        mocha.js    units/        account.js        sample.js        ...    index.html    index.js

测试用的页面

###index.html###    
Testing
###index.js###mocha.setup('tdd'); //设置使用什么模式 tdd / bdd require('units/sample')(); //引入对应测试用例mocha.run(); //运行

具体用例,关于chai的使用请看

###units/sample.js###module.exports = function(){        //chai.assert 是经典的断言风格    var assert = require('../vendor/chai').assert;            //定义一组测试用例。    suite('Array', function(){                //此方法会在这个suite所有测试用例执行前执行一次,只一次,这是跟setup的区别。        suiteSetup(function(){            console.log('suitSetup...');        });                //此方法会在每个测试用例执行前都执行一遍。        setup(function(){            console.log('setup...');        });        suite('indexOf()', function(){            //具体执行的测试用例实现代码。            test('should return -1 when not present', function(){                assert.equal(-1, [1, 2, 3].indexOf(4));            });        });        suite('indexOf2()', function(){            test('should return not -1 when present', function(){                assert.equal(0, [1, 2, 3].indexOf(1));            });        });        //此方法会在每个测试用例执行后都执行一遍,与setup相反。        teardown(function(){            console.log('teardown...');        });        //此方法会在这个suite所有测试用例执行后执行一次,与suiteSetup相反。        suiteTeardown(function(){            console.log('suiteTeardown...');         });    });}

断言Promise

###units/account.js###var chai = require("../vendor/chai"),    chaiAsPromised = require("../vendor/chai-as-promised");chai.use(chaiAsPromised);module.exports = function(){            //这个是项目的model类    var account = require('models/account.model')            suite('Account', function(){        //测试登录        test('signin', function(){                    var user = {                username: "admin@ggg.com",                password: "654321"            }            //当请求登录接口没返回用户id时显示`登录失败`            return assert.eventually.deepProperty(account.signin(user), 'attrs.id', '登录失败');        });        //测试登出        test('signout', function(){            //当请求登出接口后返回对象的code属性不等于0时提示`退出失败`            return assert.eventually.propertyVal(account.signout(), 'code', 0, '退出失败');        });    });}

目前会在整个项目的根目录下创建test目录进行存放测试相关的代码,使用也很方便,打开test/index.html即可。

clipboard.png

转载地址:http://hftil.baihongyu.com/

你可能感兴趣的文章
animate动画解析
查看>>
Curling 2.0 (poj 3009 dfs)
查看>>
SQL Server数据库存在判断语句及系统表简介
查看>>
如何查找完全二叉树最后一层的最右边的结点
查看>>
Cocos2d-x学习之---自定义图标(带触摸事件)
查看>>
Tip:部署sharepoint2013SP1指定SQL数据库时的小细节
查看>>
设置WPF窗体全屏显示:
查看>>
如何使用SOCKET 发送HTTP1.1 GET POST请求包(转)
查看>>
as3实现的拼图游戏
查看>>
Java集合框架的知识总结(1)
查看>>
MAC OSX 中,删除右键菜单中的多余重复项。
查看>>
Android开发之API应用指南
查看>>
vsphere storage appliance工作原理和实施
查看>>
设置代码ios 6添加日历事件No calendar has been set.错误
查看>>
在后台运行erlang;在需要时连回交互模式
查看>>
利用jquery对ajax操作,详解原理(附代码)
查看>>
[转载]《编程之美: 求二叉树中节点的最大距离》的另一个解法
查看>>
【Oracle】-【sqlplus / as sysdba登录报错问题】-新用户使用sqlplus / as sysdba登录报错...
查看>>
神舟优雅系列和神舟精盾系列哪个好?
查看>>
89c52串口发送接收小示例
查看>>