2011-01-10 6 views
4

Я переношу свои тесты на AutoFixture 2.0, и я столкнулся с каким-то странным поведением, которое я не могу ни объяснить, ни исправить. Этот простой тест не удается для меня:AutoFixture 2 С() не работает, как в AutoFixture 1?

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 pro perty, я был бы очень благодарен!

ответ

5

Вы только что нашли ошибку в AutoFixture 2.0. Теперь я разрешил его и нажал изменения в репозиторий (changeet 3efe812aecd1), поэтому, если вы download the latest source и скомпилируете его, он должен работать.

В случае, если вас это интересует, это связано с тем, что виртуальная собственность переопределяется дочерним классом - по-видимому, это не то, что я делаю очень часто.

Извините, об ошибке. Пожалуйста, дайте мне знать, если проблема не была решена, или если у вас есть другие вопросы.

+0

Ouch! Это заставляет меня чувствовать себя лучше, если потратить кучу времени на это сейчас, по крайней мере. Рад, что все исправлено! – ladenedge

Смежные вопросы