Ho un modello a oggetti profondamente nidificato, in cui alcune classi potrebbe apparire un po 'come questo:Come posso dire a AutoFixture di creare sempre TDerived quando crea un'istanza di un TBase?
class TBase { ... }
class TDerived : TBase { ... }
class Container
{
ICollection<TBase> instances;
...
}
class TopLevel
{
Container container1;
Container container2;
...
}
mi piacerebbe creare il mio oggetto di livello superiore come un dispositivo di prova, ma voglio tutto il TBase
istanze (ad esempio nella raccolta sopra instances
) per essere istanze di TDerived
anziché TBase
.
ho pensato che avrei potuto fare questo semplicemente usando qualcosa come:
var fixture = new Fixture();
fixture.Customize<TBase>(c => c.Create<TDerived>());
var model = this.fixture.Create<TopLevel>();
... ma questo non funziona, perché l'espressione lambda in Customize
è sbagliato. Immagino che ci sia un modo per farlo, ma la correzione automatica sembra mancare di documentazione, se non come un flusso di coscienza sul blog dello sviluppatore.
Qualcuno può indicarmi la giusta direzione?
Grazie. Mi auguro che sia stato documentato ... :-) –
E ': http://www.nudoq.org/#!/Packages/AutoFixture/Ploeh.AutoFixture/TypeRelay :) –
Quindi, la "documentazione" è: " Trasmette una richiesta per il Type in una richiesta per il Type ", che in realtà non lo rende così utile :-) Ma il mio punto più ampio è che non c'è modo di trovare anche questa informazione scarse a meno che tu non sappia dove cercare, o leggere l'intera API: è come usare un dizionario per cercare una parola che non si sa come si scrive. Ci deve essere un tutorial più completo o un cheat-sheet, altrimenti il 99% della tua potenziale base di utenti sarà rimandato al primo ostacolo, il che sarebbe un vero peccato, data la quantità di sforzo che ovviamente è andata a finire. –