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

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功能中隔绝你的代码。

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

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

其他测试书籍有相关内容 

原文地址:https://www.cnblogs.com/chentianwei/p/9154337.html