2011-01-25 57 views
12

我剛開始使用D2編程語言。我喜歡單元測試是語言本身的一部分,但我似乎無法找到任何模擬對象庫。那裏有標準的嗎?D有哪些模擬對象庫?

回答

6

我知道的唯一的模擬對象庫是DMocks,但它被放棄了。它可能無法用最近的編譯器版本編譯。 也許BlackHole,WhiteHole自動執行std.typecons將在一定程度上幫助你。

1

雖然它不是幻想作爲一個真正的模擬對象庫可能是,我現在做的依賴注入了良好的效果如下方式:

class Car(Engine = AtomicEngine, Wheel = CartWheel) 
{ 
    this() 
    { 
     engine = new Engine; 
     ... 
    } 

    Engine engine; 
    Wheel[4] wheels; 
} 

如果沒有MockEngine提供租車默認使用首選AtomicEngine這很整潔,因爲那是我大部分時間想要的。還要注意的是,注入是在編譯時完成的,對於模擬功能沒有運行時間損失,即不需要繼承。

unittest 
{ 
    auto car = new Car!(MockBrokenEngine, MockWheel); 
    car.start(); 
    assert(...); 
} 

讓我們來測試賽車帶着一顆破碎的引擎這樣。

+0

這一切都很好,但你如何創建的嘲笑?這是OP的要求。 – 2014-08-14 19:28:41