AutoFixture 2 con () non funziona come fece nel AutoFixture 1?
-
09-10-2019 - |
Domanda
sto porting miei test a AutoFixture 2.0 , e ho eseguito in per qualche strano comportamento che io non posso spiegare né correzione. Questo semplice test sta fallendo per me:
var autoFixtures = new Fixture();
var file = autoFixtures.Build<File>()
.With(f => f.Name, "bleh.txt")
.CreateAnonymous();
Assert.That(file.Name, Is.EqualTo("bleh.txt")); // Fail?!
Il test ha esito positivo se cambio Name
ad un'altra proprietà di File
, che mi porta a pensare che ho una sorta di personalizzazione presenti per Name
che non funzionava quando stavo usando AutoFixture 1.0. Ho perlustrato il mio codice, però, e non riesco a trovare niente di simile.
L'abilitazione dell'analisi non sembra aiutare molto.
autoFixtures.Behaviors.Add(new TracingBehavior());
mostra, tra le altre cose:
Requested: System.String Name
Requested: Ploeh.AutoFixture.Kernel.SeededRequest
Created: Ploeh.AutoFixture.Kernel.NoSpecimen
Requested: Ploeh.AutoFixture.Kernel.SeededRequest
Requested: System.String
Created: Ploeh.AutoFixture.Kernel.NoSpecimen
Requested: System.String
Created: 8a022fda-fa4e-49b7-b0c2-285fef765386
Created: Name8a022fda-fa4e-49b7-b0c2-285fef765386
Created: Name8a022fda-fa4e-49b7-b0c2-285fef765386
FWIW, Name
è dichiarata come proprietà virtuale di classe di base di File
, e poi sovrascritta in File
come tale:
public abstract class Item
{
public virtual string Name { get; set; }
...
}
public class File : Item
{
public override string Name { get; set; }
...
}
Se qualcuno ha qualche idea su qualcosa potrei provare, o da qualche parte avrei potuto inavvertitamente personalizzato il comportamento della proprietà Name
, sarei molto riconoscente!
Soluzione
È appena trovato un bug in AutoFixture 2.0. Ora ho risolto e spinto i cambiamenti al repository (changeset 3efe812aecd1), quindi se si scaricare l'ultima sorgente e compilarlo, dovrebbe funzionare.
Nel caso in cui siete interessati, si era legato a una proprietà virtuale venga sacrificata per una classe figlia -. A quanto pare non una cosa che faccio molto spesso
Mi dispiace per il bug. Si prega di farmi sapere se il problema non è stato risolto, o se avete altre domande.