Classe con una collezione nidificata: come faccio a popolare la classe nidificata?
-
12-11-2019 - |
Domanda
Sono un po 'confuso per idratare una classe con una raccolta nidificata di un'altra classe. Ricevo l'errore:
AutoFixture non è stato in grado di creare un'istanza da System.Collections.generic.ilist`1 [Tylename ...
Ho provato a usare Fixture.Register()
per registrare il tipo per popolare la classe interna. Potrei solo avere a che fare con un campione che mostra
- La classe principale
- La collezione nidificata (Ilist/Ienumerable) di un'altra classe.
L'ho notato anche Register()
è contrassegnato come obsoleto, ma non c'è documentazione sul Inject()
Metodo su CodePlex, quindi sono sconcertato da come dovrebbe funzionare.
Soluzione
L'autofixture non fa presunzioni su come istanziare istanze di interfacce, ma puoi Abilita abbastanza facilmente il comportamento che cerchi - EG per numeri interi:
fixture.Register(() => fixture.CreateMany<int>());
Nel prossimo AutoFixture 2.1 puoi anche solo Abilita le convenzioni per varie collezioni con un unico metodo chiamata:
var fixture = new Fixture().Customize(new MultipleCustomization());
Per quanto riguarda la deprecazione del metodo del registro, si prega di notare che si tratta di un solo sovraccarico del metodo di registro contrassegnato. Il metodo Inject è la sostituzione diretta: ha la stessa firma e utilizzo, solo un nome diverso. Tutti gli altri sovraccarichi di registro non sono deprecati e devono essere usati come "documentati".