Skip to content

Node.js unit testing with an example of the game "CatchALover"

Notifications You must be signed in to change notification settings

aojiaotage/CatchALover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

怒捉老王

##单元测试基础

###概念 1.单元测试:对程序中最小的模块中的方法进行的正确性检验。在Node.js中,单元测试所指的模块和module(通常也就是一个文件)一般来说是一致的。 2.TDD:测试驱动开发,以倡导先编写代码,再编写程序得名。 3.BDD:行为驱动开发,通过从需求端到程序端的软件行为的统一自然语言描述对开发流程中软件期望行为进行统一。 4.TDD & BDD:虽然这两个词因为比较相近,容易被理解为互斥或者互相取代的,但是实际上TDD和BDD所指的层面是不一样的,TDD所指的是在具体的函数方法层面上,通过编写测试的方式描述方法应有的实现,然后进行开发。BDD则是通过更高层级的抽象,使用更自然的语言描述方法、模块甚至是程序的行为,以此达到从需求到实现的统一描述。 5.测试替身(TestDouble):包含桩子(stub),伪造对象(fake),间谍(spy),模拟对象(mock)。不同场景下使用不同的测试替身,但目的都很明确,实现隔离的、结果可验的测试。

###单元测试的好处 1.易于重构 2.定位问题 3.清晰描述模块和方法的功能 4.引导程序的设计

###缺点 1.看起来很花时间 2.姿势不正确的单元测试带来的问题 3.概念和姿势的复杂性容易影响

###相关工具

1.mocha:Node.js单元测试框架 2.chai:js断言库 3.sinon:独立的测试替身库

需求

Models

Lover

1.基础属性:有血条(抗揍)、裸奔

2.能走能跑、会躲(老王必备技能)、找到衣服可以穿

3.跑会消耗耐力,耐力没了就要原地休息,无法跑动

新增需求:从数据库中取出相关参数初始化老王,并且提供存储功能保存老王的副本。

Scene

场景,包含大小,是否能躲藏,已经存在场景中的人物等属性

Dog

1.基础属性:速度(一直处于奔跑状态) 2.能够嗅探,向场景询问有木有老王的存在,无视老王的隐藏状态 3.吠,向几个场景以内的所有人发出信号

Services

SceneService

处理人物和场景之间互动的请求和处理,如: 1.开关门 2.老王定向躲藏到某个场景中去

UserService

处理人物之间的互动 比如,老王被殴打,老王被狗咬,媳妇儿阻碍丈夫等行为

About

Node.js unit testing with an example of the game "CatchALover"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published