A. 写测试的重要性
我觉得在写软件的时候,除了极个别的超级牛人,真有不少“牛人”觉得自己的代码不用测,让他写测试就是当面污辱他,都会认同写测试和写文档的重要性,我当然也非常的认同,写测试会让自己心里有底。尤其是在重构软件的时候,不会觉得特别的心虚,不会把以前能用的功能又搞坏了吧?
真事儿
曾经,我老家民风淳朴,勇敢,开车那是绝对不能系安全带的,只有胆小鬼才会系安全带。如果你坐在副驾驶,敢系安全带,那朋友就别做了,当场绝交,这绝对是对司机最大的羞辱!
现在,有些人觉得让他写测试就是最大的羞辱。怎么着,以为我写的代码不够鲁棒么?
如果是大公司,有专门的测试员还可以强行甩锅,如果是自己的项目,自己写自己测试,还是花点时间写测试比较好。
B. 测试的粒度
虽然我写测试,但是我并不喜欢写测试,写测试并没有太多乐趣。
测试总有个粒度的问题,100%都测试一遍是不可能的。所以,我自己做的时候基本上按照下面的情况写测试:
- 用户界面不写,反正自己眼睛看看就可以了
- 重要的功能如安全方面写测试
- 觉得以后可能会取消的功能不写,都可能取消了,写个屁啊!
- 领导看重的功能不想写也要写(重点!)
C. 如何写测试
我在视频中反复强调,Rails是个功能大而全的框架,无论是我们生成控制器(Controller)的时候还是生成模型(Model)的时候,都会顺便给我们生成test文件,比如上两次课中生成的:
test/controllers/users_controller_test.rb
test/models/user_test.rb
这两个文件都是我们在生成controller和model自动生成的,当然了,现在还没有内容,我们的测试用例是写在这几个文件里,然后运行
$rails test
......
/Users/dong/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.1/lib/active_record/connection_adapters/mysql2_adapter.rb:26:in `rescue in mysql2_connection': Unknown database 'lmzdx2_test' (ActiveRecord::NoDatabaseError)
如果你碰到的错误和我一样,这个错误说明没有建数据库。要再建一个test的数据库。
Rails项目环境
Rails项目默认生成三个环境,一个是测试环境,一个是开发环境,还有一个是生产环境。这对应于每个环境。可以使用下面这条命令检查一下:
首先使用rails console进入console,然后执行Rails.env就知道是在哪个环境下了。
如果想进入test环境,可以执行: rails console test
D. Rails的控制台
如果你还没有建立过user的控制器和模型,先要执行下面三条命令。
rails generate controller Users new
rails generate model User name:string email:string
rails db:migrate
如果已经执行过的就不用了。
rails console是一个可以在命令行下与rails交互的程序。因为Rails主要是用来在web软件的,如果web端还没有建立好,那么可以在console下对rails进行操作。这样非常的方便。