Day 4 初始化的 RSpec 资料夹剖析

该文章同步发布於:我的部落格

利用 Command line 来创建你的 RSpec 资料夹

一样打开终端机并确认在你想要的路径( 桌面等等... )

$ mkdir learn-rspec
$ cd learn-rspec
$ rspec --init
  create .rspec
  create spec/spec_helper.rb

这边指令是先创建一个资料夹 ( learn-rspec ) 并且进入里面,然後下达 rspec --init 的指令。

rpsec --init 这个指令的目的就在於帮你初始化你的这个资料夹,并且帮助我们建立起基本的执行档以及设定档

这时候我们能够透过昨天下载好的 VSCode 来打开这个资料夹 ( VSCode 的使用非常直觉,所以就不介绍了 )

.rspec 的作用

刚刚做完 rspec --init 後,原本空空的资料夹多了一些东西,如果有仔细看 Terminal 的话,应该是早就发现了!

我们先介绍 .rspec 这个执行档的功能,点开档案後会看到 --require spec_helper

这个指令是什麽意思呢?

每一次下达测试的指令之前,不论你是要测试一小个方法,或是一个完整的功能
他都会确保在所有动作之前去读取 spec_helper.rb 这个档案,确保你所有的设定档都会被成功执行!

spec_helper.rb

这个档案的是整个 RSpec 的设定档,里面有许多的叙述以及设定,这边就大致的讲述,以及示范各种设定的效果!

这个页面的上半部都是属於注解的叙述,这个档案会在我们刚刚提到的 .rspec 执行档的设定下,保证被读取。

以及确保这个档案保持轻量,避免测试读取的时间过久,效率变低!他希望我们能够只读取我们需要的功能。

还记得我们前几天提过的 RSpec 生态圈吗?

这边可以根据不同的 Gem 去做设定,我们也提过 RSpec 可以在 rspec-expections 以及 rspec-mocks 加入不同的函式库做结合!

红色框框处就是设定 rspec-expections 的地方,这时候一定会不知道如何设定,也不知道有什麽语法可以用~

推荐一个叫做 Rubydoc.info 的网站,里面存放着各式各样的 Gem 的语法,以及设定,需要什麽样的 arguments 甚至是 Github 的连接都帮你设计好了,你只需要找你想要的资料即可!

整个搜寻的流程会是:

rspec -> rspec-expections -> 点击 configuration

映入眼帘的会是:

这边就会是官方提供的 API 让你去设定的文件,内容都描述的蛮详细的!

不论你想要改颜色,设定语法等等,滚动到下方都有更范例或是连结,非常实用。

所以同理,绿色框框的则是 rspec-mocks 的设定档,依循着同样的逻辑,也可以找到属於 mocks 的 API 喔!

从 50 行开始,就是一些和 Gem 不相关的设定,比较像是使用的体验,或是一些特殊的小功能!

在红色框框处,我们能看到他会对某一种设定进行说明,以及用法!

往後的每一个区块都会是 RSpec 推荐给我们的设定,我们可以斟酌使用,这边就示范一下加入红色框框处的设定会长什麽样子!

  1. 首先,打开注解,找一个地方放,不要放到其他 Gem 的设定里面喔!

  1. 根据叙述随意的做一个测试档案,看看效果;我们可以知道叙述中说,这是一个可以过滤一些 example 的功能,只要加上 f 的前缀,快来试试看吧

  1. 得到结论,加了 f 前缀的会被留下并测试,没有加上 f 的会被过滤掉,虽然这个功能有点鸡肋,目前想不到用在哪,因为 RSpec 可以单个 example 做测试,之後会教;但这边主要想传达阅读文件,自己手动试试看的感觉!

其他的部分就靠大家自己玩玩看罗~

Out Put 的效果

RSpec 的 Out Put 有分成预设以及稍微正式一点的模式

在上面的范例中,我有在 command line 後方加入 --format doc 的指令,就是为了让格式看起来有被箝套的效果,这样方便我能够轻松的了解哪个 example 是在哪里 context 之下 ( 这边听不懂 example context 等等,很正常,我们马上就会学到 )

我放上图片让大家看一下预设以及箝套效果的不同:

预设版本 ( 只有绿灯 ):

箝套版本 ( 包含叙述的结构 ):

test-configure 是最外层
would be focus and test 是被测试的范例的叙述

现在教大家如何改变自己的 Out Put 效果,然後不使用 command line。

还记得 spec_helper.rb 是我们拿来设定整个 RSpec 的档案,仔细看的话,会找到关於文字格式的叙述,也就是我们要的 Out Put 效果!

spec_helper.rb 中加入这一行 ( 他其实就在下面,可以复制上来用就好 )

接着你就算不加入 --formate doc 也可以直接印出易懂的 Out Put 效果罗!

小结

今天带大家认识了基本的 RSpec 档案结构,以及里面的东西是什麽?该去哪里找文件等等!

现在已经对於 RSpec 有最初初初初初步的认识了,明天我们将会谈谈什麽测试驱动开发,以及他对於 RSpec 的价值在哪里?


<<:  轻松小单元 - 面对突如起来的资安法

>>:  [Android Studio 30天自我挑战] TableLayout元件对齐方式

Day 02-购物车系统简介

前言 随着网路逐渐普及,越来越多人选择'网购',而网购中最後结帐的部分极为重要。 今天要来讲讲:离线...

Day09表单(HTML)

表单 原本介绍的标签都比较属於呈现给使用者 但是今天要介绍的表单呢就不仅是单单呈现而已 因为他会将使...

[Day29]What is the Probability?

上一篇介绍了Hashmat the brave warrior,这题只需要输入两个数字,并让两个数字...

【Day10】「如果肚子饿了,就吃香蕉」--流程判断逻辑

tags: JavaScript 「如果肚子饿了,就吃香蕉」--流程判断逻辑 最简单的流程控制,就是...

Day 22 - WooCommerce: 信用卡付款设定选项 (下)

图 22-1: SinoPac 信用卡设定页面 在昨天已经替信用卡付款方式的设定页面规划了四个设定...