ThoughtWorks-成都信息工程学院创新实验室

Javascript练习2-Frequncy Number

2017-05-19  本文已影响13人  TW_徐娆

羊咩咩队 徐娆

一.git的学习与使用

1.GET下载版本Git安装包
2.下载安装
3.在需要上传GIT的文件夹内右键


Git命令行打开方式

4.建立Git仓库,运行命令:

$ git init
建立仓库

我们可以看到文件夹中多了一个.git的文件夹,这个文件夹就是Git用来管理我们的仓库的,不要随意地改动它。
5.将文件放入Git仓库

$ git add FNumber.js //将文件放入缓存区

add
$ git commit  -m "test" //放入本地仓库 引号中的内容是本次版本的标注
$ git log //查看仓库

commit

上传成功!

git学习教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256916071d599b3aed534aaab22a0db6c4e07fd0000

二、Node.js和jasmine 的安装与环境配置

1.下载最新版本的node.js并安装
2.打开CMD命令行
一般来说安装了nodejs之后会自动安好npm,我们需要在命令行中安装Jasmine的框架

$ npm install jasmine-node -g

使用NPM命令安装库时,遇到 npm ERR! fetch failed https://registry.npmjs.org/xxx的问题

NPM安装教程

jasmine 框架的使用

在需要建立项目的文件夹调出命令行或 git bash

$ jasmine init //初始化框架

我们可以看到出现了一个spec的目录


打开目录,我们发现只有一个support 文件夹


于是我们回到命令行,建立一个更完整的框架

$ jasmine examples

Good!现在我们有整个的框架了

我们可以在webstorm 里直接打开刚才的文件夹,框架已经为我们写好了一些测试

直接使用它!

$ jasmine

五个测试全部通过√

是时候写我们自己的代码与测试框架了!

三、Frequncy Number 编程练习

任务分解 测试驱动表

首先我们回到上文建立的框架中,修改框架。
留下最简单的模版,写一个最简单的测试:输入空,返回空

在js脚本中写出它的实现



使用module的exports 方法把它暴露出来

运行测试

Paste_Image.png

成功通过一个测试

继续实现其他的用例
测试代码:

describe("F Number", function() {
    var FNumber= require("../../lib/jasmine_examples/FNumber");
    it("should return space", function() {
        var string = FNumber('hi');
        expect(string).toEqual('hi 1');

    });
    it("should return space", function() {
        var string = FNumber('hello word');
        expect(string).toEqual('hello 1\r\nword 1');

    });
    it("should return space", function() {
        var string = FNumber('love me love my dog');
        expect(string).toEqual('love 2\r\nme 1\r\nmy 1\r\ndog 1');

    });
    it("should return space", function() {
        var string = FNumber('it was the age of wisdom it was the age of foolishness it is');
        expect(string).toEqual('it 3\r\nwas 2\r\nthe 2\r\nage 2\r\nof 2\r\nwisdom 1\r\nfoolishness 1\r\nis 1');

    });



});

功能实现代码:




var read = 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;
}, []);
};
var split = function (words){
    return words.split(/\s+/);
}

var sort = function (groupWords) {
    groupWords .sort((x, y) => y.count - x.count);
}

var combie = function (groupWords) {
    return groupWords.map((e) => format(e.word, e.count)).join('\r\n');
}
var format = function (words, count){
    return words + ' ' + count;
}
function FNumber(words){
    if(words !== ''){
        let intArray = split(words);
        let  groupWords = read(intArray);
                 sort(groupWords);
        return combie(groupWords);
    }
    return '';
}
module.exports = FNumber;

运行测试



通过~

add到本地仓库

上传到仓库

仓库链接:
https://github.com/ALmostLovers/FNumber

上一篇下一篇

猜你喜欢

热点阅读