我正在将测试移植到 自动Fofuture 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中找到了一个错误。我现在已经解决了它,并将更改推向了存储库(Changeet 3efe812aecd1),因此,如果您 下载最新消息来源 并编译它,它应该起作用。

如果您有兴趣,这与一个虚拟属性被儿童班级覆盖有关 - 显然我经常做的事情。

对不起这个错误。请让我知道问题是否尚未解决,或者您还有其他问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top