2011-02-02 46 views
3

我正在編寫一個包裝git調用的應用程序。我需要能夠測試它(使用rspec),所以我正在歸檔一個git存儲庫並在測試執行時提取它。僞造git倉庫進行測試

但是,這變得單調乏味,因爲對測試存儲庫進行更改意味着重新包裝所有內容。另外,我需要能夠準確記住git存儲庫中包含的內容,這使得很難將測試存儲庫用於多個測試文件。

我在尋找類似fakefs在那裏,也許我可以做類似如下:

before :all do 
    @test_repo = FakeGit::init 
    @test_repo.add(file) 
    @test_repo.commit(file, "Some message") ===> returns "SHA_ID" 
end 

然後在我的測試代碼的地方,我可以這樣做:

it "should point to a SHA_ID" do 
    @test_repo.rev_parse("HEAD").should == "SHA_ID" 
end 
+2

假設你真的需要這樣做,最簡單的方法不是簡單地存儲創建測試回購的腳本,而不是測試回購本身? – Cascabel 2011-02-02 06:38:55

回答

5

貴應用程序除了包裝git調用之外什麼都不做?它是否使用超出調用git的任何邏輯需要測試?如果它只是一個包裝,那麼測試你的應用程序就等於測試git本身,這可能是多餘的。

但是,如果你的應用程序帶來的表的東西超越了簡單的git的電話,你最好創建一個「混帳叫」 接口(或等效的紅寶石最近的),你在你的測試模擬。然後,您將測試您的應用程序邏輯,一直到它必須觸摸實際的git調用。

Look here簡要說明了嘲笑和假貨之間的區別。你似乎在試圖製造一個假貨,甚至使用真實的東西。我會建議尋找嘲弄,而不是僞造/剔除