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!

È stato utile?

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.

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