AutoFixture 2使用()不能像在AutoFixture 1中那样工作吗?

lad*_*dge 4 autofixture

我正在将我的测试移植到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?!
Run Code Online (Sandbox Code Playgroud)

如果我Name改为另一个属性,测试成功File,这导致我认为我有一些自定义存在,Name因为当我使用AutoFixture 1.0时,该工作无效.不过,我已经搜索过我的代码了,我找不到那样的东西.

启用跟踪似乎没有多大帮助.

autoFixtures.Behaviors.Add(new TracingBehavior());
Run Code Online (Sandbox Code Playgroud)

显示,以及其他东西:

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
Run Code Online (Sandbox Code Playgroud)

FWIW Name被声明为File基类的虚拟属性,然后被覆盖File:

public abstract class Item
{
    public virtual string Name { get; set; }
    ...
}

public class File : Item
{
    public override string Name { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果有人对我可能会尝试的事情有任何想法,或者某个地方我可能无意中定制了该Name物业的行为,我将非常感激!

Mar*_*ann 5

您刚刚在AutoFixture 2.0中发现了一个错误.我现在已经解决了它并将更改推送到存储库(changeset 3efe812aecd1),因此如果您下载最新的源代码并进行编译,它应该可以正常工作.

如果您感兴趣,它与由子类重写的虚拟属性有关 - 显然不是我经常做的事情.

对此bug感到抱歉.如果问题尚未解决,或者您有其他问题,请与我们联系.