全栈工程师成长记

编程重新定义人生

强迫症也有春天 9/20日记

Objective
完成:神秘的 RSpec 测试第二轮 ch1

Reflective
情绪:表示跟今天北京的天气一样晴朗
低点:没有

Interpretive
学到:

1.在 Atom 里想要要对一个文件的缩进排版优化,只要在该文件上点右键选 “Beautify File” 就可以了
(前提是先在 Atom 的 Packages 里安装 atom-beautify 插件)

2.rspec-rails:

  • describe:用于定义一组事件 比如 describe "GET index" do 可以定义具体测试 index action 的多个行为
  • it:用于定义一个具体的 example,比如 index action 的测试里可以包括 it "assigns @courses and render" doit "render template" do
  • context:用于描述内容,比如context "when course doesn't have a title " do
  • panding:用于存放尚未想好要如何测试的一个方法(先占坑)

领悟:

手打跟复制粘贴的效率差距果真不是一个量级的,原本计划今天做 rspec 测试练习第二遍,结果因为是一个字一个字的手打,一天下来只做了一个章节……

不知道北京从什么时候开始入秋,反正最近几天的最低气温已经越来越低。不过秋天来了,春天也就不远了,这不,今天我就发现自己的强迫症迎来了春天。

在做 rspec 测试的时候,如果测试通过,命令行会直接提示:

....................

Finished in 0.26345 seconds (files took 1.74 seconds to load)
20 examples, 0 failures

类似的结果,只有3行文字,非常的清晰明了。

后来在写一个 show action 的测试时,虽然测试结果是通过了,但同时却会出现一大堆的 DEPRECATION WARNING 提示:

DEPRECATION WARNING: ActionController::TestCase HTTP request methods will accept only keyword arguments in future Rails versions.

Examples:

get :show, params: { id: 1 }, session: { user_id: 1 }
process :update, method: :post, params: { id: 1 }
 (called from block (3 levels) in <top (required)> at /Users/nfreeness/Project/classrom/spec/controllers/courses_controller_spec.rb:26)
DEPRECATION WARNING: ActionController::TestCase HTTP request methods will accept only
keyword arguments in future Rails versions.

只要有一行相关的错误代码,那个 Examples 的提示就会出现两次,随着类似代码的增加,每运行一次测试,命令行的 log 就会因为这些提示而疯狂的滚动,看着非常碍眼(平时 log 一多我都要直接 command + k 清除),于是决心把它摘掉。

原本的测试写法是:
get :show, :id => course.id
这种情况它就会提示写法有问题。

改成:
get :show, params: { id: course.id }
就ok了。而且之后再写其他 action 也会小心留意这个用法,从此告别这些烦人的 DEPRECATION WARNING 提示。

As @dhh suggested, controller HTTP methods are a prime candidate for kwargs. 
post url, nil, nil, { a: 'b' } doesn't make sense.
More explicit way would be: post url, params: { y: x }, session: { a: 'b' }.

Decisional
形容:通过今天的测试练习再次印证了拼图学习和肌肉记忆的强大威力。
努力:完成神秘的 RSpec 测试第二轮?