Autofixture 2 с () не работает, так как он сделал в автозависимости 1?
-
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), так что если вы Скачать последний источник И скомпилировать его, он должен работать.
В случае, если вы заинтересованы, это было связано с виртуальной собственностью, переоцениваемым ребенком - видимо не то, что я делаю очень часто.
Извините за ошибку. Пожалуйста, дайте мне знать, если проблема не была решена, или если у вас есть другие вопросы.