2011-01-25 4 views

risposta

6

L'unica libreria di oggetti di simulazione che conosco è DMocks, ma è stata abbandonata. Potrebbe non essere compilato con le versioni recenti del compilatore. Forse BlackHole, buco bianco e AutoImplement da std.typecons vi aiuterà in una certa misura.

1

Anche se non è sofisticato come una vera e propria libreria di oggetti finta potrebbe essere, io attualmente faccio l'iniezione di dipendenza con buoni risultati nel seguente modo:

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

    Engine engine; 
    Wheel[4] wheels; 
} 

Se non MockEngine viene fornito di default auto a usare l'AtomicEngine preferito che è pulito perché è quello che voglio la maggior parte del tempo. Si noti inoltre che l'iniezione viene eseguita in fase di compilazione senza alcuna penalità in fase di esecuzione per le capacità di derisione, ovvero non è richiesta alcuna eredità.

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

Testiamo la macchina con un motore rotto come questo.

+0

Questo è tutto bene, ma come si fa a creare le deride? Questo è ciò che l'OP sta chiedendo. –

3
  • DMocks-revived è un quadro oggetto fittizio per il linguaggio di programmazione D, scritto anche in D.
  • dunit (nomad) avanzata unit testing toolkit.