Я портирую свои тесты на AutoFixture 2.0 , и я столкнулся с каким-то странным поведением, которое я не могу ни объяснить, ни исправить. Этот простой тест провалился для меня:
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?!
Тест завершается успешно, если я изменяю Name
на другое свойство File
, что заставляет меня думать, что у меня есть какая-то настройка для Name
, которая не работала, когда я использовал AutoFixture 1.0. Однако я проверил свой код и ничего подобного не могу найти.
Включение трассировки не очень помогает.
autoFixtures.Behaviors.Add(new TracingBehavior());
отображает, помимо прочего:
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
объявляется как виртуальное свойство базового класса File
, а затем переопределяется в File
следующим образом:
public abstract class Item
{
public virtual string Name { get; set; }
...
}
public class File : Item
{
public override string Name { get; set; }
...
}
Если у кого-нибудь есть какие-либо идеи о том, что я мог бы попробовать, или где-то, что я мог непреднамеренно настроить поведение свойства Name
, я был бы очень признателен!