亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用Ruby實現一個單元測試框架的教程

2019-10-26 19:25:12
字體:
來源:轉載
供稿:網友

在去年的YOW Melbourne開發者大會上,我參加了一些研習班。這些研習班由@coreyhaines和 @rains負責,因此TDD(測試驅動開發)成為了主要討論的內容。通常這不是一個問題,但是令人沮喪的是(考慮到這是2010年舉辦的開發者大會),那時上網還不是很方便,我剛裝上linux的筆記本無法下載Rspec。幸運的是幾周前,我決定自己寫一個單元測試框架(因為我有這個能力:)),接著我就有了一個可用的測試框架,問題解決了。但是,這讓我想到一個問題,最少可以用多少代碼寫成一個可用的單元測試框架?

一個最小可用的單元測試

剛開始寫一個單元測試框架的時候代碼是很少的,但當我想給它加入一些特性時就變得沒有那么精煉了:) 幸運的是重寫是很容易的。我們真正需要做的是執行下面的代碼:
 

describe "some test" do it "should be true" do  true.should == true end  it "should show that an expression can be true" do  (5 == 5).should == true end  it "should be failing deliberately" do  5.should == 6 endend

正如你看到的,它很像是一個基本的Rspec測試。讓我們寫一些代碼來執行它。

譯注:RSpec 工具是一個 Ruby 軟件包,可以用它構建有關您的軟件的規范。該規范實際上是一個描述系統行為的測試。

構建一個簡單的框架

首先要做的是使用“describe”來定義一個新的測試。既然我們想要把”describe” block放在任何地方(例如,文件本身),我們需要對Ruby做一點擴展?!皃uts”函數在Kernel block中,因此可以在任何地方使用(因為Object類包含了Kernel并且Ruby中的每個對象都繼承自Object類),同樣的我們會把describe放到Kernel block中以賦予同樣的能力):
 

module Kernel def describe(description, &block)  tests = Dsl.new.parse(description, block)  tests.execute endend

譯注:Ruby block:Ruby語言的block功能類似回調函數。

正如你看到的,”describe”接收一個用來描述測試的字符串和包含了測試代碼的block。在這里,我們將測試的代碼和”describe”分開講解(例如,”it” block)。因此我們創建了Dsl類,用它的parse函數處理待測試的block,結果會產生一個可以執行我們所有測試的對象,但是不要高興得太早。Dsl類看上去是這樣的:

class Dsl def initialize  @tests = {} end def parse(description, block)  self.instance_eval(&block)  Executor.new(description, @tests) end def it(description, &block)  @tests[description] = block endend

這里要做的是在Dsl對象的上下文里對block求值:
 

self.instance_eval(&block)

我們的Dsl對象有一個”it”函數,同樣也接收一個描述和一個block,這里和describe block包含的內容完全一致,一切都運行得很好(例如,我們基本上會在幾個函數調用時使用”it”函數,每次都傳入一個描述和一個block)。我們還可以在Dsl對象中定義其他的函數,并且這些函數會成為允許在”describe” block中使用的“語言”的一部分)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩专区在线观看| 欧美成人一区二区三区电影| 色综合天天综合网国产成人网| 亚洲成人av片在线观看| 91在线视频成人| 国产玖玖精品视频| 亚洲天堂网在线观看| 久久网福利资源网站| 国产视频精品va久久久久久| 国产小视频91| 亚洲激情国产精品| 国产不卡av在线| 欧美黑人极品猛少妇色xxxxx| 欧美情侣性视频| 色噜噜狠狠狠综合曰曰曰88av| 日韩高清免费在线| 亚洲国产精品成人精品| 国产午夜精品视频| 亚洲人成在线免费观看| 懂色av中文一区二区三区天美| 国产精品自产拍在线观看| 性欧美亚洲xxxx乳在线观看| 成人啪啪免费看| 欧美专区在线视频| 亚洲美女精品成人在线视频| 日韩欧美亚洲一二三区| 亚洲日本欧美日韩高观看| 国产亚洲免费的视频看| 日韩av毛片网| 欧美国产在线电影| 欧美精品九九久久| 亚洲一区二区久久久久久久| 岛国av午夜精品| 国产精品h片在线播放| 久久九九精品99国产精品| 国产69精品久久久| 日韩av中文在线| 亚洲深夜福利视频| 亚洲国模精品一区| 性色av一区二区三区免费| 亚洲精品国产精品乱码不99按摩| 日韩欧美一区二区在线| 欧美三级欧美成人高清www| 国产69精品99久久久久久宅男| 日韩视频欧美视频| 亚洲理论片在线观看| 成人在线中文字幕| 国产精品电影网| 欧美福利小视频| 成人av番号网| 91精品国产91久久久久| 久久精品在线视频| 久久中文字幕在线视频| 97免费中文视频在线观看| 亚洲精品一区久久久久久| 91视频8mav| 精品色蜜蜜精品视频在线观看| 成人免费看吃奶视频网站| 国产成人aa精品一区在线播放| 国产一区二区三区网站| 欧洲精品久久久| 亚洲国产日韩欧美综合久久| 在线精品国产成人综合| 韩国19禁主播vip福利视频| 国产精品私拍pans大尺度在线| 国产精品香蕉在线观看| 亚洲国产精品久久久久秋霞不卡| 国产精品亚洲综合天堂夜夜| 欧美成人剧情片在线观看| 久久国产精品免费视频| 琪琪亚洲精品午夜在线| 久久香蕉国产线看观看网| 91精品国产777在线观看| 韩国v欧美v日本v亚洲| 国语自产偷拍精品视频偷| 欧美老女人www| 久久天天躁狠狠躁夜夜躁2014| 中文字幕在线观看日韩| 欧美丰满少妇xxxxx做受| 色小说视频一区| 亚洲a∨日韩av高清在线观看| 第一福利永久视频精品| 欧美日韩国产精品专区| xxxxx成人.com| 久久成人一区二区| 最近2019中文字幕mv免费看| 亚洲另类xxxx| 国产亚洲日本欧美韩国| 精品久久久久久中文字幕大豆网| 欧美激情日韩图片| 亚洲免费影视第一页| 久久免费国产视频| 国产精品福利片| 国产午夜精品视频免费不卡69堂| 日韩中文字幕网址| 一区二区av在线| 欧美成人网在线| 97国产suv精品一区二区62| 亚洲精品在线视频| 国产91精品久| 欧美性xxxxxx| 久久精品电影一区二区| 日韩成人av在线| 91免费看片网站| 97精品在线视频| 欧美大全免费观看电视剧大泉洋| 日韩有码视频在线| 91九色单男在线观看| 久久视频中文字幕| 日韩欧美aⅴ综合网站发布| 2020国产精品视频| 亚洲电影免费观看高清完整版| 国产精品中文字幕在线观看| 国产精品99久久久久久人| 日韩精品免费在线| 午夜免费久久久久| 日韩欧美极品在线观看| 久久全球大尺度高清视频| 欧美极品少妇xxxxⅹ喷水| 在线日韩日本国产亚洲| 亚洲娇小xxxx欧美娇小| 亚洲国产高潮在线观看| 久久精品这里热有精品| 亚洲理论电影网| 亚洲毛茸茸少妇高潮呻吟| 一本一本久久a久久精品牛牛影视| 91精品久久久久久久久不口人| 欧美在线视频观看| 狠狠干狠狠久久| 狠狠爱在线视频一区| 久久人91精品久久久久久不卡| 国产亚洲美女精品久久久| 久久这里有精品| www.色综合| 国产不卡一区二区在线播放| 久久久国产精品亚洲一区| 国产午夜精品全部视频在线播放| 91国产精品视频在线| 久久国产精品影视| yellow中文字幕久久| 欧美性xxxxx极品娇小| 色综合久久久888| 久久在线精品视频| 久久久国产精彩视频美女艺术照福利| 欧美另类交人妖| 日韩有码在线观看| 久久亚洲精品视频| 深夜福利日韩在线看| 亚洲欧洲在线视频| 日韩视频一区在线| 欧美性视频在线| 国产精品一区二区久久精品| 色妞久久福利网| 日本久久亚洲电影| 懂色av一区二区三区| 亚洲欧美综合精品久久成人| 91精品国产99久久久久久| 日本高清+成人网在线观看| 欧美激情第三页| 精品亚洲夜色av98在线观看| 成人黄色在线观看| 精品美女久久久久久免费| 国产97色在线| www.99久久热国产日韩欧美.com|