gpt4 book ai didi

c# - 我如何告诉 AutoFixture 在实例化 TBase 时始终创建 TDerived?

转载 作者:可可西里 更新时间:2023-11-01 08:20:51 25 4
gpt4 key购买 nike

我有一个深层嵌套的对象模型,其中一些类可能看起来有点像这样:

class TBase { ... }

class TDerived : TBase { ... }

class Container
{
ICollection<TBase> instances;
...
}

class TopLevel
{
Container container1;
Container container2;
...
}

我想创建我的顶级对象作为测试夹具,但我希望所有 TBase 实例(例如上面的 instances 集合中的)是 TDerived 而不是 TBase 的实例。

我认为我可以使用类似的东西非常简单地做到这一点:

var fixture = new Fixture();

fixture.Customize<TBase>(c => c.Create<TDerived>());

var model = this.fixture.Create<TopLevel>();

...但这不起作用,因为 Customize 中的 lambda 表达式是错误的。我猜想有办法做到这一点,但 AutoFixture 似乎缺少文档,除了作为开发人员博客上的意识流。

谁能指出我正确的方向?

最佳答案

虽然 dcastro 的回答也是一个选项,但最安全的选项是使用 TypeRelay类。

fixture.Customizations.Add(
new TypeRelay(
typeof(TBase),
typeof(TDerived));

关于c# - 我如何告诉 AutoFixture 在实例化 TBase 时始终创建 TDerived?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27247114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com