使用Laika测试Meteor APP
10 Jul 2014
Meteor目前有RTD、Laika和Safety-Harness三个测试框架。
RTD功能齐全,既可以做单元测试,还可以做验收测试,并且还有测试覆盖率报告。Laika是个轻量级的框架,简单易用,对集成测试支持很好。Safety-Harness可以认为是RTD和Laika功能的集合体,作者的目的是构建一个Web化、持续集成、报告清晰对业务友好的测试框架。这里是这三个测试框架的详细比较。
从功能上看,Safety-Harness是最佳的选择,但是Safety-Harness版本较新,文档也不多。
Laika简单易用,文档丰富,相较而言RTD就没有那么快上手,综合考虑选择Laika。
创建应用
安装应用需要用到的代码包和Laika所需的组件:
使用meteor create tes下texample
命令创建一个应用,这个命令会创建一个名为testexample的目录,删除目录中的文件和目录,重新创建client
、server
和tests
三个目录。
在Meteor应用中,client
目录中的文件只会在客户端执行(浏览器)中运行,server
目录中的文件只会在服务端执行。
tests
目录用来保存测试文件,该目录下的文件在发布应用时不会包含进应用中。
添加HTML页面
添加客户端脚本
我们监听一个click事件,从输入框中获取答案,然后通过Meteor.call
调用服务端提供的addAnswer
方法把答案添加到数据库中。
添加服务端脚本
服务端提供了addAnswer
方法把客户端传来的答案添加MongoDB中,并返回answerID
给客户端。
自动测试
在tests
目录下创建一个名为TestAnswers.js
的文件
- 我们首先加载了NodeJS的assert模块
- 接着定义了一个
submitAnswers
测试套件
- 套件里包含了两个测试用例’server initialization’和’server insert : OK’
- 我们使用
test()
方法创建测试用例,该方法接收测试用例名和一个回调函数两个参数
- 回调函数中的server和client参数可以认为分别代表了服务端和客户端
.eval
可以用来添加评估代码,通俗点说就是设置测试的输入
emit
用来发送设置好的测试输入
.once
和.on
收到emit
发送的测试输入进行判断是否满足测试要求
以测试用例’server initialization’举例来说,该用例通过’server.eval’在服务端的数据库中查找了answer并把结果通过emit
发送出来,
最后通过.once
接收并判断结果是否满足测试条件。
运行测试