Classe con una collezione nidificata: come faccio a popolare la classe nidificata?

StackOverflow https://stackoverflow.com/questions/5458137

  •  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

  1. La classe principale
  2. 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.

È stato utile?

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".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top