The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber
TDD(Test-Driven Development)測試驅動開發(fā)。
在編寫代碼之前先編寫一個測試,這時候測試是失敗的,red,因為還沒有寫對應的實現(xiàn)代碼。然后開始編寫實現(xiàn)的代碼,然后跑剛才寫的測試,直到測試通過,green。
然后我們就重構我們的代碼,refactor,然后再次跑我們的測試,green重構成功,red重構失敗。失敗也沒有關系,繼續(xù)重構。而且有了測試的保證,我們可以很放心的重構。
TDD偏激的做法是,在沒有編寫測試之前,絕不寫一行代碼。軟件開發(fā),測試先行。用測試來驅動開發(fā)。
BDD(Behavior-Driven Development)行為驅動開發(fā)。
在應用級別,項目的利害關系人通常不關心數(shù)據(jù)被持久化到什么地方,什么格式,什么存儲類型。當然不是說他們不關心數(shù)據(jù),而是說他們更關心他們保存的數(shù)據(jù),在他們需要的時候可以獲取出來。
軟件開發(fā)團隊面臨的主要問題就是溝通問題。BDD旨在通過簡單的描述性語言來幫助解決溝通問題,軟件就是:給出一個上下文環(huán)境,發(fā)生事件,然后得到預期的輸出。
Given,When,Then是BDD的三個元素。
RSpec
RSpec是一個BDD框架。
Cucumer
BDD that talks to domain experts first and code second
更多的信息可以查看http://cukes.info/。
安裝
?
?
創(chuàng)建一個文件。
?
寫入下面的內(nèi)容那個。
?
describe代表一組測試。
it代表一個測試。
我們首先初始化一個greeter,然后調(diào)用greet方法,然后看看預期的結果是否等于"hello, rspec!"。
運行下面的命令看看結果。
?
結果是
uninitialized constant RSpecGreeter
RSpec告訴我們還沒有定義RSpecGreeter類。就讓我們在同一個文件中定義一個RSpecGreeter類。
?
然后再次執(zhí)行rspec greeter_spec.rb,這次看到了。
?
這下成功了,這個有點像我們學習編程語言的時候寫的helloworld。
在項目下創(chuàng)建兩個目錄
?
將剛才創(chuàng)建的greeter_spec.rb文件移動到spec文件夾
?
在features文件夾中創(chuàng)建greeter_says_hello.feature文件
?
敲入下面的內(nèi)容
?
保存之后,回到項目根目錄。
執(zhí)行
?
可以看到下面的內(nèi)容
?
創(chuàng)建文件夾
?
新建一個文件
?
在文件中輸入
?
保存退出。
再次執(zhí)行
?
這次看到了我們熟悉一些的信息,一些紅色的信息。
uninitialized constant CucumberGreeter (NameError)
好像和之前的是一類的,提示我們沒有創(chuàng)建CucumbeGreeter類。好吧,在同一個文件features/step_definitions/greeter_steps.rb中,我們創(chuàng)建它。
?
再次執(zhí)行。
?
這下好了,看到了綠色的東西。
好吧,今天就先到這里,讓我們對TDD,BDD,RSpec,Cucumber有了一個初步的認識。
?
教程參考:The RSpec Book
所有的代碼放在
https://github.com/woaigithub/the-rspec-book-with-cucumber
轉載于:https://blog.51cto.com/virusswb/1060201
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDos***种类,原理,简单预防
- 下一篇: OOP设计思考——何时使用接口?