Sono nuovo di AutoFixture, quindi non so se la seguente idea avrà senso o essere una cosa ragionevole da fare. Ho un'applicazione che mi occupo del test di integrazione e fa un uso massiccio di Castle Windsor. Per semplificare la gestione delle dipendenze e rendere i miei test più simili al codice dell'applicazione, ho creato il contenitore Windsor nel mio metodo di inizializzazione del test e nell'utilizzo del contenitore. Risolvi per creare un'istanza del codice che sto testando. Mi piacerebbe allontanarmi da questo approccio poiché ha limitato la mia flessibilità in determinate situazioni.Tecnica per l'utilizzo di AutoFixture per l'integrazione di test di un'applicazione utilizzando Castle Windsor
Quello che mi piacerebbe fare è di avere le prove che sembrano qualcosa di simile:
[Theory]
[Dependency]
public void TestWithDependencies(IThing thing)
{
thing.Hello();
}
per rendere questo accada, posso effettuare le seguenti operazioni:
public sealed class DependencyAttribute : AutoDataAttribute
{
public DependencyAttribute()
: base(new Fixture().Customize(new WindsorCustomization()))
{
}
}
public class WindsorCustomization : ICustomization
{
public WindsorCustomization()
{
// build container here using SUT installers
}
public void Customize(IFixture fixture)
{
fixture.Inject<IThing>(new Thing());
}
}
Facendo questo funziona, ma quello che vorrei evitare è la necessità di copiare ogni interfaccia per la mappatura dell'implementazione dal container Windsor in AutoFixture IFixture.
Welp! Ho appena dato un'occhiata al codice di AutoMoq e ho visto esattamente come fare ciò che voglio fare. Posso postare il codice in una risposta se qualcuno è interessato. – thebeekeeper
Sì, è molto simile a come funziona AutoMoq :) –