Apprezzo molto la potenza di AutoFixture unita alle teorie di XUnit. Recentemente ho adottato l'uso di encapsulating customizations e li ho forniti ai miei test tramite un attributo.Come posso modificare l'apparecchio che il mio attributo dati teoria personalizzato crea per AutoFixture?
In determinate occasioni, ho bisogno di uno scenario unico per eseguire il test con. Quando uso un AutoDomainDataAttribute, come sopra, posso chiedere un IFixture e mi aspetto di ottenere la stessa istanza creata dall'attributo?
Nel mio scenario, sto utilizzando MultipleCustomization per impostazione predefinita per le raccolte, ecc. Tuttavia, in questo caso, voglio solo un singolo elemento inviato al costruttore del SUT. Quindi, ho definito il mio metodo di prova in questo modo:
[Theory, AutoDomainData]
public void SomeTest(IFixture fixture) {
fixture.RepeatCount = 1;
var sut = fixture.CreateAnonymous<Product>();
...
}
Sfortunatamente, ricevo un'eccezione durante la creazione del prodotto anonimo. Altri test funzionano bene, se chiedo un parametro Product come metodo con quegli attributi. È solo un problema in questo caso particolare, dove spero che il parametro fixture sia lo stesso creato dal mio AutoDomainDataAttribute.
Il costruttore del prodotto si aspetta un oggetto IEnumerable che normalmente si riempia di 3 elementi, a causa delle personalizzazioni che ho sul posto tramite AutoDomainData. Attualmente, la mia DomainCustomization è una personalizzazione composta composta da MultipleCustomization e AutMoqCustomization, in questo ordine.
L'eccezione è: "InvalidCastException: impossibile eseguire il cast dell'oggetto di tipo" Castle.Proxies.ObjectProxy "per digitare" Prodotto "."
Grazie, Mark. Sono passato immediatamente all'approccio di prova imperativo dopo la pubblicazione qui. Comunque è bello sapere l'alternativa. Infine, il mio test particolare garantisce che l'ultima categoria non possa essere rimossa dal prodotto (ce ne deve essere almeno una). Questa è l'unica volta che ho bisogno di controllare anche il 'RepeatCount'. Grazie ancora! – ventaur
Non potresti aver rimosso 'Categorie.Conta() - Articoli 1' prima come parte della configurazione di prova, quindi testati con una sola a sinistra, non è possibile rimuovere l'ultima? –
Sì, immagino di sì. A volte i programmatori soffrono di complicazioni eccessive. :-) – ventaur