Question

Je portage mes tests AutoFixture 2.0 , et j'ai couru pour un comportement étrange Je ne peux ni expliquer ni correctif. Ce test simple ne parvient pas pour moi:

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?!

Le test réussit si je change Name à une autre propriété de File, ce qui me conduit à penser que j'ai une sorte de cadeau de personnalisation pour Name qui ne fonctionnait pas quand j'utilisais AutoFixture 1.0. J'ai parcouru mon code, bien que, et je ne peux pas trouver quelque chose comme ça.

Activation du traçage ne semble pas beaucoup d'aide.

autoFixtures.Behaviors.Add(new TracingBehavior());

affiche, entre autres choses:

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 est déclarée comme une propriété virtuelle de la classe de base de File, puis redéfinie dans File en tant que tel:

public abstract class Item
{
    public virtual string Name { get; set; }
    ...
}

public class File : Item
{
    public override string Name { get; set; }
    ...
}

Si quelqu'un a des idées sur quelque chose que je pourrais essayer, ou quelque part je pourrais avoir, par inadvertance, sur mesure le comportement de la propriété Name, je serais très reconnaissant!

Était-ce utile?

La solution

Vous avez trouvé un bogue dans AutoFixture 2.0. Je suis maintenant résolu et poussé les changements au référentiel (changeset 3efe812aecd1), donc si vous télécharger la dernière la source et le compiler , il devrait fonctionner.

Dans le cas où vous êtes intéressé, il était lié à une propriété virtuelle étant supplantée par une classe enfant -. Apparemment pas quelque chose que je fais très souvent

Désolé au sujet du bug. S'il vous plaît laissez-moi savoir si le problème n'a pas été résolu, ou si vous avez d'autres questions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top