Git+node.js+TDD

目录

  • Git学习
  • node.js学习
  • 用Nodejs和Git完成TDD编程

Git学习

  • Git是什么
    Git是一款免费、开源的分布式版本控制系统

  • Git的安装
    从https://git-for-windows.github.io下载,然后按默认选项安装即可

  • Git命令学习
    http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

node.js学习

  • node.js是什么
    简单的说 Node.js 就是运行在服务端的 JavaScript
  • 安装配置
    http://www.runoob.com/nodejs/nodejs-install-setup.html
  • jasmine框架安装和使用
    http://www.cnblogs.com/dubaokun/p/3398694.html

用Nodejs和Git完成TDD编程

  • TDD是什么

测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。

  • 为什么要用TDD编程

使用TDD编程有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程

  • TDD编程的基本过程

测试驱动开发的基本过程如下:
① 快速新增一个测试
② 运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过
③ 做一些小小的改动,尽快地让测试程序可运行,为此可以在程序中使用一些不合情理的方法
④ 运行所有的测试,并且全部通过
⑤ 重构代码,以消除重复设计,优化设计结构

  • 用Nodejs基于TDD的方式完成 Frequency Number

划分

划分单词
分组
排序
多个空格

测试

describe("Frequency Number",function(){
    var main=require('../helpers/main');

    it("returns empty string given empty string",function(){
        var result =main('');
        expect(result).toEqual('');
    });
    it("returns string given one word",function(){
        var result =main('he');
        expect(result).toEqual('he 1');
    });
    it("returns string given two different words",function(){
        var result =main('he is');
        expect(result).toEqual('he 1\r\nis 1');
    });
    it("returns string given duplicated words",function(){
        var result =main('he is he');
        expect(result).toEqual('he 2\r\nis 1');
    });
    it("returns string given duplicated words need to be sorted",function(){
        var result =main('he is is');
        expect(result).toEqual('is 2\r\nhe 1');
    });
    it("returns string given words splited by multiple spaces",function(){
        var result =main('he    is');
        expect(result).toEqual('he 1\r\nis 1');
    });
})

实现

var format = function(word,count){
    return word + ' '+ count;
}

var group = function(wordArray){
    return wordArray.reduce((array,word)=>{
            let entry = array.find((e)=> e.word===word);
            if(entry) {
                entry.count++;
            }
            else{
                array.push({word:word,count:1});
            }
            return array;
        },[]);
};

function main (words) {
    if(words !== ''){
        let wordArray = words.split(/\s+/);
        let groupedWords = group(wordArray);
        groupedWords.sort((x, y)=> y.count -  x.count);
        return groupedWords.map((e)=>format(e.word, e.count)).join('\r\n');
        }
       return ''
}

module.exports=main;

版本(前面三个版本因操作不熟练未提交成功)

Git+node.js+TDD_第1张图片
233.png

你可能感兴趣的:(Git+node.js+TDD)