当前位置: 首页 > 后端技术 > Node.js

前端测试框架mocha使用总结

时间:2023-04-04 00:02:46 Node.js

安装npmi-gmochanpmichai-D//断言库模块测试比如add函数//add.jsfunctionadd(a,b){returna+b}module.exports=add新建一个测试文件add.test.js(一般测试文件都是以被测文件命名,后缀为.test)describe:叫做“测试套件”(testsuite),意思是一组的相关测试。它是一个函数,其第一个参数是测试套件的名称(“测试添加函数”),第二个参数是实际执行的函数。it:全称为“测试用例”(testcase),意思是单个测试,是最小的测试单元。//add.test.jsvaradd=require("./add.js")varexpect=require("chai").expect;describe("addfunctiontest",function(){it("1+1=2",function(){expect(add(1,1)).to.be.equal(2)//断言库使用});it("返回值是一个数字",function(){expect(add(1,1)).to.be.a("number")});})chai中expect模块的语法非常接近自然语言的风格。常见的有://等于或不等于expect(4+5).to.be.equal(9);expect(4+5).to.be.not.equal(10);expect(foo)。to.be.deep.equal({bar:'baz'});//布尔值为真expect('everthing').to.be.ok;expect(false).to.not.be.ok;//typeofexpect('test').to.be.a('string');expect({foo:'bar'}).to.be.an('object');expect(foo).to.be.an.instanceof(Foo);//includeexpect([1,2,3]).to.include(2);expect('foobar').to.contain('foo');expect({foo:'bar',hello:'universe'}).to.include.keys('foo');//emptyexpect([]).to.be.empty;expect('').to.be.empty;expect({}).to.be.empty;//matchexpect('foobar').to.match(/^foo/);上面的方法可以很方便的测试基于浏览器测试的封装方法和模块,比如ajax。这里我使用自己的ajax库baby-ajaxmocha-phantomjs:是一个PhantomJS执行mocha浏览它使用PhantomJS的浏览器环境,通过事件监听来检测mocha测试的执行过程。mocha-phantomjs-core:是mocha-phantomjs的核心依赖库。作者单独提取出来是因为它也可以支持SlimerJS。SlimerJS:基于Gecko内核(Firefox),与PhantomJSAPI几乎是同一个工具,SlimerJS在执行时会默认启动一个带有界面的浏览器表单。可以看到整个执行过程npmibaby-ajaxmocha-phantomjs-coremocha-phantomjs-D在项目目录下创建一个test目录mochainittestmocha会为我们创建一个测试模板,包括html,css,js手册参考mocha.js、chai.js和它自己的测试js//ajax。test.jsvarAjax=require('../example/static/ajax.js');varexpect=require('chai').expect;expect(Ajax).to.be.an('object');describe("gettest",function(done){Ajax.get("./data.json").then(function(res){expect(res).to.have.include.keys("data","status")//返回值必须有两个key,一个是data,一个是statusdone()},function(){expect(res).to.have.include.keys("data","status")done()})})这样就可以在node中模拟浏览器环境,从而可以获取到浏览器中的对象,比如window,用于监听,value的类型是有限的。但是一旦设计了业务逻辑测试和UI测试,可能就有些力不从心了。业务功能测试需要数据源的支持,一味使用假数据难以覆盖异常情况;而UI测试可以使用jq的触发器来模拟用户行为,但这显然是一个巨大的任务。首先在test目录下的html中写好要测试的dom元素,然后写测试逻辑。为一个可能在一个小时内完成的UI编写测试逻辑可能需要一天或更长时间。前端UI的自动化测试还需要慢慢摸索,任重而道远。前端技术交流群:709397872(欢迎加入)