前端之 —— node.js摸爬打滚之路(二)

这篇主要学习:

  • 测试框架mocha;
  • 断言库:should;
  • 测试率覆盖工具 istanbul;

创建并进入lesson3:

mkdir lesson3 && lesson3

创建main.js并编写测试函数:

var fibonacci = function(n) {
    if(typeof n !== ‘number‘){
        throw new Error(‘n should be a Number‘)
    }
    if(n < 0){
        throw new Error(‘n should >= 0‘)
    }
    if(n > 10){
        throw new Error(‘n should <= 10‘)
    }
    if(n === 0){
        return 0
    }
    if(n === 1){
        return 1
    }
    return fibonacci(n-1) + fibonacci(n-2)
}

if(require.main === module){
    var n = Number(process.argv[2])
    console.log(‘fibonacci(‘+ n +‘) is‘,fibonacci(n))
}

exports.fibonacci = fibonacci

lesson3下创建test文件夹,并创建main.test.js:

mkdir test && cd test && echo.>main.test.js

在main.test.js编写测试用例:

var main = require(‘../main‘)
var should = require(‘should‘)

describe(‘test/main.test.js‘,function(){
    it(‘should equal 0 when n === 0‘, function(){
        main.fibonacci(0).should.equal(0)
    })
    it(‘should equal 1 when n === 1‘, function(){
        main.fibonacci(1).should.equal(1)
    })
    it(‘should equal 55 when n === 10‘, function(){
        main.fibonacci(10).should.equal(55)
    })
    it(‘should throw when n > 10‘, function (){
    (function (){
      main.fibonacci(11)
    }).should.throw(‘n should <= 10‘)
  })
    it(‘should throw when n < 0‘, function(){
        (function(){
            main.fibonacci(-1)
        }).should.throw(‘n should >= 0‘)
    })
    it(‘should throw when n isnt Number‘, function(){
        (function(){
            main.fibonacci(‘逗比‘)
        }).should.throw(‘n should be a Number‘)
    })
})

cmd输出:

mocha

如下图所示则完成测试:

安装一个 istanbul:

cnpm i istanbul -g

执行:

istanbul cover _mocha

(注:如果window下报找不到_mocha文件的错,就找到你电脑中mocha安装目录下的_mocha文件的位置替代_mocha,例:istanbul cover C:\Users\[用户名]\AppData\Roaming\npm\node_modules\mocha\bin\_mocha)

可以看到,其中的分支覆盖率是 91.67%,行覆盖率是 87.5%。

时间: 2024-10-14 03:35:42

前端之 —— node.js摸爬打滚之路(二)的相关文章

前端之 —— node.js摸爬打滚之路(一)

安装: window下的安装,node.js直接上官网下载:https://nodejs.org/en/ 选择LTS,也就是版本号比较低的稳定版,下载下来后运行下载的文件进行安装: 通过win+R打开cmd命令行:执行以下命令安装淘宝镜像: $ npm install -g cnpm --registry=https://registry.npm.taobao.org 学习express框架: 全局安装express: cnpm install express -g 建立新文件夹sesson1并

Node.js爬虫-爬取慕课网课程信息

第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让我们方便的操作HTML,就像是用jQ一样 开始前,记得 npm install cheerio 为了能够并发的进行爬取,用到了Promise对象 //接受一个url爬取整个网页,返回一个Promise对象 function getPageAsync(url){ return new Promise(

Node.js/Python爬取网上漫画

某个周日晚上偶然发现了<火星异种>这部漫画,便在网上在线看了起来.在看的过程中图片加载很慢,而且有时候还不小心点到广告,大大延缓了我看的进度.后来想到能不能把先把漫画全部抓取到本地再去看. 经过一段时间的研究还是有所收获:成功在风之动漫网站上抓取了<火星异种>,以及在腾讯动漫上抓取了<海贼王>.一般来说,抓取网页内容有两种形式:一是静态资源,即网站内容在第一时间就全部呈现在网页上:另一种是动态资源,即网站内容随后通过用户交互,如:操作滚动条等,异步的更新.对于第一种形式

WebSocket 一场Web 通讯革命悄然来临——Node.js摸石头系列之五

转自: http://www.cnblogs.com/hsxixi/archive/2011/12/24/2300641.html 从这回开始,我们来搭建一个简单的聊天室.因为 http 协议是无状态的,搭建聊天室这样的事从来都让人觉得疙疙瘩瘩的不是那么顺理成章.如果不使用 flash.applet 等浏览器插件的话,我们需要定期轮询服务器来获取大家的聊天信息.这造成了一定的延迟和大量的网络通讯. 不过,随着 HTML5 的浮出水面,这一情况有望彻底改观了.在 HTML5 的众多特性中,有一个总

Centos6.9安装Node.js+npm爬坑

Node.js选择 1.下载 wget https://nodejs.org/dist/v8.4.0/node-v8.4.0-linux-x86.tar.gz 2.解压 tar -xJf node-v8.4.0-linux-x86.tar.xz 3. 移到通用的软件安装目录 /opt/ mv node-v6.9.2-linux-x64 /opt/ 4. 在系统命令中建立npm 和 node 命令的软连接 ln -s /opt/node-v6.9.2-linux-x64/bin/node /usr

前端(Node.js)(4)-- 使用loopback快速搭建用户系统

1.loopback.io 2.模型系统与数据源(datasources) 3.使用Github账号登陆 4.邮箱验证 原文地址:https://www.cnblogs.com/foreverlin/p/10150651.html

【读书笔记】Node.js开发指南

一:Node.js是什么? 正如当年为了统一 JavaScript 语言标准,人们制定了 ECMAScript 规范一样,如今为了统一 JavaScript 在浏览器之外的实现, CommonJS 诞生了. CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足. CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环下运行,就像用 C++ 编写的应用程序可以使用不同的

Node.js C++ addon编写实战(一)之node-gyp

http://deadhorse.me/nodejs/2012/10/08/c_addon_in_nodejs_node_gyp.html 这是一个三篇的系列文章,记录Node.js C++扩展开发中的一些经验与坑.Node.js C++ addon编写实战(一)之node-gypNode.js C++ addon编写实战(二)之对象转换Node.js C++ addon编写实战(三)之Buffer 补上第四篇:Node.js C++ addon编写实战(四)之兼容v0.11+与nan模块 从n

详解Node.js API系列C/C++ Addons(3) 程序实例

http://blog.whattoc.com/2013/09/08/nodejs_api_addon_3/ 再续前文,前文介绍了node.js 的addon用法和google v8 引擎,下面,我们进入真正的编码,下面将会通过六个例子,学习node addon 范例,了解addon编程的特性 创建一个空项目 随机数模块 向模块传递参数 回调函数处理 线程处理 对象管理 创建一个空项目 vi modulename.cpp #include <node.h> void RegisterModul