宝哥软件园

PHPStorm中如何对开发项目进行单元测试详解

编辑:宝哥软件园 来源:互联网 时间:2021-08-27

安装必要的包

开发的单元测试最常用的是使用摩卡咖啡包。首先确保你本地安装nodejs,之后按照摩卡咖啡包。

新公共管理安装摩卡g然后还需要安装相关的断言工具,Node.js中常用的断言库有:

assert: TDD风格应: BDD风格预期: BDD风格chai: BDD/TDD风格使用新公共管理安装安装这些断言库其中之一即可。

汉化补丁配置开发单元测试环境

在汉化补丁中选择菜单:运行-编辑配置,点击右上角添加摩卡咖啡。

分别填写下面几项,关于摩卡咖啡单元测试可以参考官网:https://machajs。组织/

名称:随便一个运行配置的名称,如摩卡特斯特工作董事:当前项目目录摩卡包装:摩卡安装包的目录,node_modulesmocha用户界面:测试类型,这里选择TDD(对应维护库)测试目录:这一项可以选择测试目录或文件全部在目录:中整个目录都进行测试文件模式:某种模式的文件,可以填正则表达式测试文件:某个特定的测试文件填写完成并且没有报错后点击好的。

开发进行单元测试

这里我们选择维护库,TDD模式进行单元测试。在上面选定的测试目录目录下新建一个测试文件test.js .

const assert=require(' assert ');//测试排列类型的方法套件(“Array”,function() { //测试索引关于方法套件(' #indexOf()',函数(){ //测试用例测试('不存在时应返回-1 ',function() { assert.equal(-1,[1,2,3]).indexOf(4));});});});点击选择摩卡运行,在汉化补丁下面的输出框中有测试的结果,绿色表示通过,红色表示失败。

断言库的使用

摩卡咖啡进行单元测试的时候,除了能够使用维护断言库,只要断言代码中抛出错误,摩卡就可以正常工作。

维护库:TDD风格

下面列举维护库中常用的断言函数,详情可参考官网:https://www .npmjs。com/包/断言

assert.fail(实际、预期、消息、运算符)断言(值、消息)断言。好的(值、[消息]) assert.equal(实际、预期、[消息]) assert.notEqual(实际、预期、[消息]) assert.deepEqual(实际、预期、[消息]) assert.notDeepEqual(实际、预期、[消息])断言。不严格的质量(实际、预期、[消息])断言。投掷(块、[消息])其中的参数说明如下:

值:实际值实际:实际值预期:期望值block:语句块消息:附加信息BDD风格应。射流研究…断言库

安装方法:国家预防机制安装应该-保存-开发,官网地址:https://github。com/short js/short。射流研究…

const short=require(' short ');const user={ name: 'tj ',pets: ['tobi ',' loki ',' jane ',' bandit ']};用户。应该的。拥有。属性(' name ',' TJ ');用户。应该的。有过。财产(“宠物”)。和。长度为(4);//如果对象是用Object.create(null)//创建的,那么它不继承对象。原型',所以它不会有` .short ` getter//这样就可以做:应该(用户)有。属性(' name ',' TJ ');//也可以用这种方法测试null应该是(null)。没有。小心点。ok();somasynctask(foo,function(err,result){应该。没有。存在(err);应该存在(结果);结果。酒吧。很短。equal(foo);});应该库可以使用链式调用,功能非常强大。相关文档参考:http://shouldjs.github.io/

用户。很短。小心点。一个。(对象)的实例和。have.property('name ',' TJ ');用户。宠物。应该的。小心点。(数组)的实例和。拥有。长度为(4);常用的应该断言方法:

无意义谓词,没作用增加可读性:安。当然。一个。还有。小心点。有,有。用,就是,哪个

应该。相等(实际的,预期的,[消息]):判断是否相等很短。注释qual(实际的、预期的、[消息]):判断是否不相等应。strictEqual(实际的、预期的、[消息]):判断是否严格相等应。应. should.notStrictEqual(实际,预期,[消息]):判断是否严格不相等should.deepEqual(实际、预期、[消息]):判断是否递归相等应。notDeepEqual(实际的,预期的,[消息]):判断是否递归不想等很短。抛出(块、[错误]、[消息]):判断是否抛出异常很短。请勿关闭(阻止,[消息]):判断是否不抛出异常应该。失败(实际的、预期的、消息的、操作符的):判断是否不等很短。if错误(错误):判断是否为错误应。存在(实际,[消息]):判断对象是否存在不应存在(实际,[消息]):判断对象是否不存在另外应该还提供了一系列类型判断断言方法:

//bool类型判断(真实)。很短。小心点。true();假的。应该。没有。小心点。true();//数组是否包含[ 1,2,3].应该。containDeep([2,1]);[ 1,2,[ 1,2,3]].开枪了。containDeep([1,[ 3,1]]);//数字比较(10).应该的。没有。小心点。nan();NaN。应。小心点。nan();(0).应该的。小心点。beloworequal(10);(0).应该的。小心点。beloworequal(0);(10).应该。高于或等于(0);(10).应。高于或等于(10);//承诺状态判断//别忘了处理异步性质(新承诺(函数)(解析,拒绝){ resolve(10);})))应该。小心点。已完成();//使用摩卡咖啡的测试示例可以返回' promiseit('是async ',()={ 0返回新的承诺(决心=决心(10))。应该的。小心点。已完成();});//对象的属性判断({ a: 10 }).({ a: 10,b: 20 })应。拥有。属性({ b : 20 });[1,2]。({})。//类型检查[1,2,3].很短。就是。array();({})应该。就是。object();几种常见的测试风格代码举例

BDD

BDD提供的接口有:description(),context(),it(),指定()、之前()、之后()、之前每个(),和afterEach().

描述(“数组”,函数(){ 0在function() { //.});描述(' # indexOf()'、函数(){ context('不存在时)、函数(){ it('不应引发错误)、函数(){(函数(){ [1,2,3]).索引(4)的;} .很短。没有。throw());});它('应该返回-1 ',函数(){ [1,2,3].索引Of(4)。很短。equal(-1);});});上下文('如果存在,function() { it('应该返回元素在数组中第一次出现的位置的索引,function() { [1,2,3].索引Of(3)。应该。相等(2);});});});});时分双工时分双工

提供的接口有:suite()、test()、suiteSetup()、suiteTeardown()、Setup()和拆解():

套件(“Array”,function() { setup(function() { //.});套件(' #indexOf()',函数(){ test('不存在时应返回-1 ',function() { assert.equal(-1,[1,2,3]).indexOf(4));});});});测试框架

和时分双工时分双工类似,使用套房()和测试()标记测试永烈,包含的接口有:before()、after()、beforeEach()、afterEach()。

函数ok(expr,msg) { if(!抛出新的错误消息;}套件(“数组”);test('#length ',function() { var arr=[1,2,3];好吧。长度==3);});test('#indexOf()',function() { var arr=[1,2,3];好吧。index of(1)=0);好吧。index of(2)=1);好吧。index of(3)=2);});套件('字符串');测试(“#length”,function() { ok('foo ')).长度==3);});总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

更多资讯
游戏推荐
更多+