iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
自我挑戰組

Rails測試寫起乃!!!系列 第 18

Day18 測試寫起乃 - Cucumber 前置作業

寫Cucumber之前,先了解何謂 BDD(Behaviour-Driven Development) 以及什麼是 Gherkin 語法?

BDD 行為驅動開發

簡單來說就是在寫測試前先寫測試規格書。這份測試規格會用更接近以口語的方式來描述軟體功能和測試案例。而這份規格除了事敘述文件之外,而是一份「可以被執行的規格」,也就是可以被轉成自動化測試。

Gherkin 語法

其實,Gherkin語法就是使用 Given, when, then... 等關鍵字來撰寫User Story。讓客戶、PM、開發人員都能看懂的文件,降低溝通成本
最重要的是它是支援多國語言!團隊可以用自己喜歡的語言,例如英文、中文、日文、韓文等。

功能(Feature): 一句話簡介這份規格書所涵蓋的軟體功能
 背景: 可以在這裡寫許多前置作業
  假如: 假設我....
  而且: 前置作業 1
  而且: 前置作業 2
  而且: 前置作業 3

 場景(Scenario): 測試案例 1
  假如(Given) 假設我....
  當(When) 當我做了某件事...
  那麼(Then) 結果應該要看到或得到...

 場景(Scenario): 測試案例 2
  假如(Given) 假設我....
  當(When) 當我做了某件事...
  那麼(Then) 結果應該要看到或得到...
英文關鍵字 中文關鍵字
feature 功能
background 背景 劇本
scenario 場景
scenario_outline 場景大綱 劇本大綱
examples 例子
given 假如假設假定
when
then 那麼
and 而且 並且 同時
but 但是

通常一個 場景(scenario) 只會搭配一個 當(when)

安裝

group :test do
  gem 'cucumber-rails', require: false
  # database_cleaner is not mandatory, but highly recommended
  gem 'database_cleaner'
end

當然如果要指定版本也是可以的我們目前已載官網的為主

rails generate cucumber:install

生成以下 Cucumber 檔案

...略
create  config/cucumber.yml
create  script/cucumber
 chmod  script/cucumber
create  features/step_definitions
create  features/step_definitions/.gitkeep
create  features/support
create  features/support/env.rb
 exist  lib/tasks
create  lib/tasks/cucumber.rake

在 cucumber 裡 DatabaseCleaner 為預設,如果想關閉此預設行為可以下以下指令

# features/support/env.rb
# ...
Cucumber::Rails::Database.autorun_database_cleaner = false

明天就可以來講 cucumber 的寫法摟!

參考來源:

Cucumber
Cucumber-Rails


上一篇
Day17 測試寫起乃 - expect() vs expect {}
下一篇
Day19 測試寫起乃 - 撰寫Cucumber
系列文
Rails測試寫起乃!!!30

尚未有邦友留言

立即登入留言