AutoFixture 2 mit () funktioniert nicht wie es in AutoFixture 1 getan hat?
-
09-10-2019 - |
Frage
Ich bin Portierung meine Tests auf AutoFixture 2.0 , und ich habe laufen in zu einem seltsamen Verhalten, dass ich kann weder noch fix erklären. Dieser einfache Test ist für mich Fehler:
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?!
Der Test ist erfolgreich, wenn ich ändern Name
auf eine andere Eigenschaft von File
, die mich führt zu glauben, dass ich eine Art von Anpassung vorhanden für Name
haben, die nicht arbeiten, als ich 1,0 AutoFixture verwendet wurde. Ich habe meinen Code durchforstet, aber, und ich kann nicht so etwas finden.
Tracing Aktivieren scheint nicht zu helfen viel.
autoFixtures.Behaviors.Add(new TracingBehavior());
zeigt unter anderem Zeug:
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
wird als virtuelles Eigentum von File
der Basisklasse deklariert, und dann in File
als solche außer Kraft gesetzt:
public abstract class Item
{
public virtual string Name { get; set; }
...
}
public class File : Item
{
public override string Name { get; set; }
...
}
Wenn jemand irgendwelche Ideen auf etwas hat, ich könnte versuchen, oder irgendwo könnte ich das Verhalten der Name
Eigenschaft versehentlich angepasst haben, wäre ich sehr dankbar!
Lösung
Sie haben gerade einen Fehler in AutoFixture 2.0. Ich habe jetzt beschlossen, und die Änderungen in das Repository (changeset 3efe812aecd1) gedrückt wird, so dass, wenn Sie Laden Sie die neueste Quelle und kompilieren sie es, sollte es funktionieren.
Falls Sie interessiert sind, wurden auf eine virtuelle Immobilie von einem Kind Klasse überschrieben werden -. Offenbar nicht etwas, was ich sehr oft tun
Sorry über die Fehler. Bitte lassen Sie mich wissen, wenn das Problem nicht behoben wird, oder wenn Sie weitere Fragen haben.