Git+node.js+TDD

作者: TW_BBK_周筱荻 | 来源:发表于2017-05-19 23:45 被阅读14次

    目录

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

    Git学习

    node.js学习

    用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;
    

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

    233.png

    相关文章

      网友评论

        本文标题:Git+node.js+TDD

        本文链接:https://www.haomeiwen.com/subject/ubgyxxtx.html