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

自动化测试(未完待续,更具体的后续研究补充)

时间:2023-04-03 16:08:09 Node.js

Nodeassert(断言)什么是断言?assert模块提供了一组简单的断言测试,可用于测试不变量。有严格模式和遗留模式,但建议只使用严格模式。简单的说就是引入严格模式进行测试:constassert=require('assert').strict;legacy模式的引入:constassert=require('assert')API学习1.assert.equal(actual,expected[,message])message是可选属性,会抛出错误信息严格模式:assert.strictEqual注意事项:只能判断基本数据类型,不能判断引用类型assert.equa(1,1)//true通过assert.equa({a:1},{a:1})//false不通过equal表示==strictEqual表示===//所以要注意隐式转换的问题,比如assert.equa("1",1)//true通过assert.strictEqual('1',1)//报错//false2.assert.deepEqual(actual,expected[,message])严格模式:assert.deepStrictEqual(actual,expected[,message])解释:判断期望值是否等于实际值,可以判断enumerable属性和equal函数作用一样,同样可以判断对象,数组assert.deepEqual(["1",2],[1,2])//pass//strictmodeNextassert.deepStrictEqual(["1",2],[1,2])//failed//循环比较数组中的每个元素主要是使用这两个严格模式的mocha测试框架mocha是一个功能丰富的javascript测试框架,运行在Node.js和浏览器上,使异步测试变得简单有趣。Mocha测试以串行方式运行,允许灵活和准确的报告,同时将未捕获的异常映射到正确的测试用例。首先,建议在项目中安装mocha,否则全部安装都会影响其他项目。记住这是开发依赖npminstall--save-devmocha然后新建一个test文件夹,把所有的测试文件放到test下,写测试接下来我们就可以写测试用例了,新建add.js代码如下module.exports=函数(a,b){返回a+b;};接下来,我们将测试这个功能。在test文件夹下新建一个test.js文件。上面我们安装了mochaconstassert=require('assert');constadd=require('../add.js');describe('#add',()=>{it('sum(3,5)应该返回8',()=>{assert.strictEqual(sum(3,5),8);})})这时候我们再来看一下deescribe函数。该函数可以任意嵌套,可以作为一个组使用。说白了,it函数就是一个测试用例,供你作为注释使用。可以写多个放在里面现在我们要配置测试,我们在package.json中配置一个mocha对应的测试名。运行npmtest,然后一个测试就完成了,还有一些生命周期函数,可以在describe('#add',()=>{before(function(){console.log('before:');});after(function(){console.log('after.');});beforeEach(function(){console.log('beforeEach:');});afterEach(function(){console.log('船尾呃每个。');});it('sum(3,5)shouldreturn8',()=>{assert.strictEqual(sum(3,5),8);})})你可以看看这个lifeCycle,明白了。异步测试用mocha测试一个函数非常简单,但是在JavaScript的世界里,我们写的更多时候是异步代码,所以我们需要用mocha来测试异步函数。这里涉及到一个新的知识点asyncfunction,有些朋友可能不是很了解,这里多说一句,因为我对asyncfunction了解不多,先了解async再使用callback。稍后我们使用Promises。现在我们使用Async/Await。async-定义一个异步函数(asyncfunctionsomeName(){...})-自动将函数转换为Promise-当调用异步函数时,函数的返回值会被resolve处理-内部可以使用await异步函数Await-挂起异步函数(varresult=awaitsomeAsyncCall();)-当在Promise前面使用时,await等待Promise完成并返回Promise的结果-await只能与Promise一起使用,notcallback-await只能用在async函数中修改函数如下module.exports=async()=>{letnum=awaitsetTimeout(()=>{return1console.log(1)},1000)returnnum}然后写一个测试函数constassert=require('assert')constsum=require('../add')describe("#add",()=>{it("Testasync",async()=>{letresult=awaitsum()console.log(result)console.log(1)})})运行npmtest查看结果。http测试未写karmaKarma的主要目标是为开发者提供高效的测试环境。环境是他们不必设置大量配置的地方,但开发人员可以在其中编写代码并从测试中获得即时反馈。因为获得快速反馈可以提高您的工作效率和创造力。推荐的安装方式是在项目目录中本地安装Karma(以及项目所需的任何插件)。#安装Karma:$npminstallkarma--save-dev#安装项目需要的插件:$npminstallkarma-jasminekarma-chrome-launcherjasmine-core--save-dev这将安装karma、karma-jasmine、karma-chrome-launcher和jasmine-c到node_modules的当前工作目录,也作为package.json来保存这个devDependencies,因此,任何其他开发项目工作只会执行npminstall来安装所有这些依赖项。#RunKarma:$./node_modules/karma/bin/karmastart官网推荐安装一个全局方便的命令npminstall-gkarma-cli如何集成到项目中TravisCITTravisCI是一个流行的持续集成服务,很管用与Github存储库集成以在推送代码时自动运行测试。集成是通过将一个简单的YAML文件添加到项目根目录来完成的;Travis和Github负责剩下的工作。每当您进行测试时,Travis结果都会出现在您的Github拉取请求中,并且您的历史记录将在其控制面板中可用。本文假定您已经拥有Travis帐户。配置首先是去travis官网注册一个GitHub账号然后回读你的GitHub项目opensource,里面有个setting可以打开。代码推送时Travis会收到GitHub通知,然后自动获取最新代码。CI。但是我们还是需要写一个.travis.yml文件来告诉Travis一些项目信息language:node_jsnode_js:-0.4-0.6前端配置package.json中包含一条命令"scripts":{"test":"mocha"},已全局安装mocha,推送时会自动触发npmtest