转:easylife
rails test prescription 随感
编程
controller测试
1 看一个普通,基本的用户请求是否能引发预计的ActiveRecord正常工作,需要的数据是否传给了view
2 检测controller是否能够适当地处理不合格式的请求
3 检测权限系统是否正常工作,比如一个用户请求了登录或者特定角色才能访问的页面
view测试
1 view不报错
2 view中的数据是否是你计划生成的数据
3 检测根据角色动态生成的部分,比如:登录链接,管理员链接等是否正确显示
集成测试与controller测试的区别
需要对session,cookie等跨action的数据的正确性进行测试
测试层次
1 model
2 controller
3 view(helper)
4 集成
5 验收
要遵照mvc结构。反例是如果将属于model层的东西放到controller中,那么,你至少需要模拟一个http请求,
才能开始测试
测试写到什么时候够了
我只能说,你可以在rcov中达到100%,但是rcov(或者其他测试工具)的计算方式是有问题的,你永远无法100%
测试,就像你永远也写不出完美的软件一样,够好,就可以了
什么时候使用mock/stub
1 解决依赖性
比如:你在写一个支付接口,但是现在你在开发阶段,还不想和银行打交道
2 解决某些情况
比如:你写了一个扔色子系统,随机生成1-6的数字,而你需要对掷出6点时的程序进行测试
测试程序的失败情况,而失败情况可以用stub轻松生成
3 测试过程时,未实现的功能的替代
4 Interface Discovery
设计api时,你需要它
一个测试不要使用太多mock或者stub,使用三个以上就要注意了
是否测试负面情况
上帝保佑我们有足够的时间
先写测试还是后写测试
如果你接下来要做的只是验证正确性,那么你可以后写测试,不过,验证正确性只是TDD的目的之一,你至少要在心
里记住,先写测试可以改善代码质量
mock类库
rails-test-prescription 7.7 已做出了明了的比较
你至少需要熟悉的测试工具
1 rspec
2 cucumber
3 capybara
4 factory-girl
5 database-cleaner |