Autofixture 2 с () не работает, так как он сделал в автозависимости 1?

StackOverflow https://stackoverflow.com/questions/4650424

  •  09-10-2019
  •  | 
  •  

Вопрос

Я портирую свои тесты на Автофиксировка 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 Недвижимость, я был бы самым благодарным!

Это было полезно?

Решение

Вы только что нашли ошибку в Autofixture 2.0. Теперь я решил это и подтолкнул изменения в репозиторий (FresseTeRet 3EFE812AECD1), так что если вы Скачать последний источник И скомпилировать его, он должен работать.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top