Con AutoFixture 2 () no está funcionando como lo hizo en AutoFixture 1?
-
09-10-2019 - |
Pregunta
Estoy portar mis pruebas para AutoFixture 2.0 , y me he encontrado a un comportamiento extraño que yo no puedo explicar ni solución. Esta sencilla prueba está fallando para mí:
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?!
La prueba tiene éxito si cambio Name
a otra propiedad de File
, lo que me lleva a pensar que tengo algún tipo de personalización para el presente Name
que no estaba funcionando cuando yo estaba usando AutoFixture 1.0. He rastreado mi código, sin embargo, y no puedo encontrar nada de eso.
Habilitación del rastreo no parece que ayuda mucho.
autoFixtures.Behaviors.Add(new TracingBehavior());
muestra, entre otras cosas:
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á declarada como una propiedad virtual de la clase base de File
, y luego se reemplaza en File
tales como:
public abstract class Item
{
public virtual string Name { get; set; }
...
}
public class File : Item
{
public override string Name { get; set; }
...
}
Si alguien tiene alguna idea en algo que podría intentar, o en algún lugar que podría haber personalizado inadvertidamente el comportamiento de la propiedad Name
, estaría muy agradecido!
Solución
Usted acaba de encontrar un error en AutoFixture 2.0. Ahora he resuelto y empujado a los cambios en el repositorio (conjunto de cambios 3efe812aecd1), por lo que si descargar la última fuente y compilarlo, debería funcionar.
En caso de estar interesado, que estaba relacionado con una propiedad virtual que se está anulado por una clase hija -., Aparentemente, no algo que hago muy a menudo
Lo siento por el error. Por favor, hágamelo saber si el problema no se ha resuelto, o si tiene otras preguntas.