日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber

發(fā)布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.



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/。


安裝

?

  • gem?install?rspec?
  • ?
  • gem?install?cucumber?

  • ?

    創(chuàng)建一個文件。
    ?

  • vi?greeter_spec.rb?

  • 寫入下面的內(nèi)容那個。
    ?

  • describe?"RSpec?Greeter"?do?
  • ??it?"should?say?'hello,?rspec!'?when?ti?receive?the?greet()?message"?do?
  • ????greeter=RSpecGreeter.new?
  • ????greeting=greeter.greet?
  • ????greeting.should?==?"hello,?rspec!"?
  • ??end?
  • end?



  • describe代表一組測試。
    it代表一個測試。
    我們首先初始化一個greeter,然后調(diào)用greet方法,然后看看預期的結果是否等于"hello, rspec!"。
    運行下面的命令看看結果。

    ?

  • rspec?greeter_spec.rb?


  • 結果是
    uninitialized constant RSpecGreeter

    RSpec告訴我們還沒有定義RSpecGreeter類。就讓我們在同一個文件中定義一個RSpecGreeter類。

    ?

  • class?RSpecGreeter?
  • ??def?greet?
  • ????"hello,?rspec!"?
  • ??end?
  • end?


  • 然后再次執(zhí)行rspec greeter_spec.rb,這次看到了。

    ?

  • Finished?in?0.00059?seconds?
  • 1?example,?0?failures?


  • 這下成功了,這個有點像我們學習編程語言的時候寫的helloworld。


    在項目下創(chuàng)建兩個目錄

    ?

  • mkdir?spec?features?

  • 將剛才創(chuàng)建的greeter_spec.rb文件移動到spec文件夾

    ?

  • mv?greeter_spec.rb?spec/?


  • 在features文件夾中創(chuàng)建greeter_says_hello.feature文件

    ?

  • vi?features/greeter_says_hello.feature?


  • 敲入下面的內(nèi)容

    ?

  • Feature:?greeter?says?hello?
  • ?
  • ??In?order?to?start?learning?RSpec?and?Cucumber?
  • ??As?a?reader?of?The?RSpec?Book?
  • ??I?want?a?greeter?to?say?Hello?
  • ?
  • ??Scenario:?greeter?says?hello?
  • ????Given?a?greeter?
  • ????When?I?send?it?the?greet?message?
  • ????Then?I?should?see?"hello,?cucumber!"?


  • 保存之后,回到項目根目錄。

    執(zhí)行

    ?

  • cucumber?features?


  • 可以看到下面的內(nèi)容
    ?

  • Feature:?greeter?says?hello?
  • ??
  • ??In?order?to?start?learning?RSpec?and?Cucumber?
  • ??As?a?reader?of?The?RSpec?Book?
  • ??I?want?a?greeter?to?say?Hello?
  • ?
  • ??Scenario:?greeter?says?hello???????????#?features/greeter_says_hello.feature:7?
  • ????Given?a?greeter??????????????????????#?features/greeter_says_hello.feature:8?
  • ????When?I?send?it?the?greet?message?????#?features/greeter_says_hello.feature:9?
  • ????Then?I?should?see?"Hello?Cucumber!"?#?features/greeter_says_hello.feature:10?
  • ?
  • 1?scenario?(1?undefined)?
  • 3?steps?(3?undefined)?
  • 0m0.003s?
  • ?
  • You?can?implement?step?definitions?for?undefined?steps?with?these?snippets:?
  • ?
  • Given?/^a?greeter$/?do?
  • ??pending?#?express?the?regexp?above?with?the?code?you?wish?you?had?
  • end?
  • ?
  • When?/^I?send?it?the?greet?message$/?do?
  • ??pending?#?express?the?regexp?above?with?the?code?you?wish?you?had?
  • end?
  • ?
  • Then?/^I?should?see?"(.*?)"$/?do?|arg1|?
  • ??pending?#?express?the?regexp?above?with?the?code?you?wish?you?had?
  • end?

  • 創(chuàng)建文件夾
    ?

  • mkdir?-p?features/step_definitions/?
  • 新建一個文件
    ?

  • vi?features/step_definitions/greeter_steps.rb?




  • 在文件中輸入
    ?

  • Given?/^a?greeter$/?do?
  • ??@greeter?=?CucumberGreeter.new?
  • end?
  • ?
  • When?/^I?send?it?the?greet?message$/?do?
  • ??@message?=?@greeter.greet?
  • end?
  • ?
  • Then?/^I?should?see?"(.*?)"$/?do?|greeting|?
  • ??@message.should?==?greeting?
  • end?



  • 保存退出。

    再次執(zhí)行
    ?

  • cucumber?features?


  • 這次看到了我們熟悉一些的信息,一些紅色的信息。

    uninitialized constant CucumberGreeter (NameError)

    好像和之前的是一類的,提示我們沒有創(chuàng)建CucumbeGreeter類。好吧,在同一個文件features/step_definitions/greeter_steps.rb中,我們創(chuàng)建它。

    ?

  • class?CucumberGreeter?
  • ??def?greet?
  • ????"Hello?Cucumber!"?
  • ??end?
  • end?


  • 再次執(zhí)行。

    ?

  • cucumbe?features?


  • 這下好了,看到了綠色的東西。

    好吧,今天就先到這里,讓我們對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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 91视频网址入口 | 午夜精品久久久久久久蜜桃 | 超碰福利在线观看 | 丰满岳跪趴高撅肥臀尤物在线观看 | 免费20分钟超爽视频 | 91国产精品 | 日本韩国欧美在线 | 国产91免费看 | 天天综合国产 | 亚洲av综合色区 | www.激情| 国产免费一区二区三区三州老师 | 亚洲免费婷婷 | 国产一区高清 | 97成人精品视频在线观看 | 免费的黄色一级片 | 日韩高清在线一区 | 免费在线播放毛片 | 蜜桃视频一区 | 精品久久久久中文慕人妻 | 国模精品视频一区二区 | 成年网站免费在线观看 | 91在线网址 | 久久久123 | www.-级毛片线天内射视视 | 综合久久五月天 | 日本福利片在线观看 | 亚洲最大免费视频 | 日本高清不卡一区 | 杏导航aⅴ福利网站 | 国自产拍偷拍精品啪啪一区二区 | 天天干天天谢 | 影音先锋成人网 | 爱草在线视频 | 日本二区在线观看 | 国产欧美在线观看不卡 | 精品少妇3p | 国产xxxx做受性欧美88 | 黄色片免费看 | 好紧好爽再浪一点视频 | 亚洲系列在线 | 亚洲福利视频网 | 综合精品一区 | eeuss国产一区二区三区黑人 | 欧洲人妻丰满av无码久久不卡 | 国产精品欧美久久久久天天影视 | 亲子乱一区二区三区 | 日韩欧美91 | 欧美精品欧美精品系列 | 爱看av| 91蝌蚪九色 | 日韩中文字幕在线一区 | 国模av| 奇米网久久 | 黄视频在线观看免费 | 亚洲爆乳无码一区二区三区 | 99精品久久99久久久久 | 一级视频片 | 精一区二区 | 欧美高清视频在线观看 | 免费看日产一区二区三区 | 久久精品视频99 | 国产农村妇女毛片精品久久麻豆 | 91欧美日韩麻豆精品 | 日本一区二区视频在线观看 | 欧美日韩激情在线一区二区三区 | 丁香婷婷久久 | 久久久久久网 | 在线免费观看污视频 | av55 | 免费高清av在线看 | 国内自拍小视频 | 爱爱视频在线免费观看 | 麻豆视频国产 | 国产裸体舞一区二区三区 | 国产露脸无套对白在线播放 | 视频一区二区三区在线 | h片在线观看网站 | 欧美国产日韩在线视频 | yy6080久久 | 不卡av免费 | 国产综合在线视频 | 亚洲国产一区二区三区a毛片 | 久久亚洲日本 | 亚洲自拍偷拍一区 | 日韩超碰在线 | 嫩草视频免费观看 | 成人毛片在线播放 | 中文字幕在线网站 | 欧美精品免费视频 | 99在线视频观看 | 最新中文字幕 | 在线观看三级视频 | 18岁禁黄网站| 亚洲国产精品综合久久久 | 欧美精品在线第一页 | 色小姐综合| 熟女一区二区三区四区 | 少妇光屁股影院 | 国内精品国产三级国产aⅴ久 |