Spring speeds up development by keeping your application running in the background

Rails程序自动增加:spring和spring-watcher-listen。

增加一个spring-commands-rspec gem

$ spring status  检测是否启动spring

Spring is running:
 7424 spring server | gatherer | started 220 hours ago
24917 spring app    | gatherer | started 65 hours ago | development mode

$ spring help可以检测版本和spring命令集合

手动安装gem 'spring-commands-rspec'后,会增加一个spring rspec命令

使用这个命令可以快速运行测试,不过作者也说了,测试本身写的好不好更决定速度。


Writing Faster Tests by Bypassing Rails

5个测试分组:

  1. 集成测试,需要全部Rails stack
  2. 只需要Active Record和数据库
  3. 请求测试,需要ActionPack,或者也需要ActiveRecord,也可能接触数据库看它们是否stubbed.
  4. 只使用ActiveRecord不接触database
  5. 第三方测试,不需要rails(⚠️我只看了看,没实际经验)

Prescription :

Rails不是你的程序,它是一个开发框架,除非你就是开发Rails的并工作在Basecamp大本营。


Why Speed Is Important

作者不是说所有测试都需要在15秒内完成。对大多数程序来说这是不可能的,因为集成测试很重要不能不用,这个很花费时间。

作者是说如果你有一个可靠的途径只花费少量秒数来运行相对的测试 ,你测试的价值会改进(时间成本下降)。

可以用Spring,RSpec meatdata,或者标签等等。

Prescription

如果当测试运行时, 你有很多时间来打断焦点,那么你没有得到TDD开发的全部价值。


Why Separation from Rails Is Useful

主要好处是写测试避免用rails可以鼓励你构件代码来更好的管理增长的复杂度。快速测试只是附加效果。


Rails test Precriptions, Hold the rails

隔绝的基本思想 :隔绝各个对象;从需要加载rails的rails功能中隔绝你的代码。

隔绝:不同的对象之间的交互所使用的方法越少越好。理想状态是,对象不会知道其他对象在系统中的内部结构。

❌书中给的案例,不能正确连接数据库。略过这个章节。

其他测试书籍有相关内容

Rails 5 Test Prescriptions 倒数第2章spring gem 如何让测试变快。分离rails(只有原理)的更多相关文章

  1. Rails 5 Test Prescriptions 第4章 什么制造了伟大的测试

    伴随着程序成长,测试变长,复杂性增加,如何更高效的写测试,对以后开发不会造成麻烦. 测试本身没发被测试,所以一定要清楚,可控.不要加循环,不要过于复杂的自动编程. Cost and Value 成本和 ...

  2. Rails 5 Test Prescriptions 第3章Test-Driven Rails

    本章,你将扩大你的模型测试,测试整个Rails栈的逻辑(从请求到回复,使用端到端测试). 使用Capybara来帮助写end-to-end 测试. 好的测试风格,包括端到端测试,大量目标明确的单元测试 ...

  3. Rails 5 Test Prescriptions(everday Rspectest作者推荐) 目录 1-3章

    总文档连接: RSpec.info/documentation/ 如何使用TDD 和 自动化测试来建立一个Rails app. TDD让你用测试来探索代码的设计.你将学习可利用的工具,并学习用什么工具 ...

  4. 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件

    老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...

  5. 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态

    老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态   poptest是国内唯一 ...

  6. 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer

    老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer   poptest是国内唯一一家培养 ...

  7. 老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化

    老李推荐:第14章3节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer实例化 poptest是国内唯一一家培养测试开发工程师的培 ...

  8. 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述

    老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述   HierarchyViewer库的引入让M ...

  9. 老李推荐:第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程

    老李推荐:第14章1节<MonkeyRunner源码剖析> HierarchyViewer实现原理-面向控件编程VS面向坐标编程   poptest是国内唯一一家培养测试开发工程师的培训机 ...

随机推荐

  1. 新版jquery的ajax调用 , jquery1.5以上

    原文出处:http://api.jquery.com/jQuery.ajax/,该链接页面底部有代码展示 示例1: $.ajax({ method: "POST", url: &q ...

  2. JS将阿拉伯数字转为钱

     function DX(n) {         if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))             return "数据非法" ...

  3. Python大数据:外部数据获取(网页抓取)

    import urllib2 as url import cookielib,StringIO,gzip,json import pandas as pd import numpy as np #定义 ...

  4. 系统中同时有 python2和 python3,怎么让 ipython 选择不同的版本启动?

    已经安装的情况下: > which ipython /usr/local/bin/ipython > cat /usr/local/bin/ipython  #!/usr/local/op ...

  5. android 本地通知

    NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notificat ...

  6. React Native知识

    http://www.cnblogs.com/wujy/tag/React%20Native/    React Native知识12-与原生交互 React Native知识11-Props(属性) ...

  7. Spark源码分析之Checkpoint的过程

    概述 checkpoint 的机制保证了需要访问重复数据的应用 Spark 的DAG执行图可能很庞大,task 中计算链可能会很长,这时如果 task 中途运行出错,那么 task 的整个需要重算非常 ...

  8. POJ1006——Biorhythms(中国剩余定理)

    Biorhythms Description人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色. ...

  9. Java打包可执行jar包 包含外部文件

    外部文件在程序中设置成相对当前工程路径,执行jar包时,将外部文件放在和jar包平级的目录. public class Main { 3 public static void main(String[ ...

  10. (16)Cocos2d-x 多分辨率适配完全解析

    Overview 从Cocos2d-x 2.0.4开始,Cocos2d-x提出了自己的多分辨率支持方案,废弃了之前的retina相关设置接口,提出了design resolution概念. 3.0中有 ...