模拟记录

问题描述 投票:0回答:1

在我的应用程序中,我有一堆 DTO,通常作为记录实现。各种方法都将这些 DTO 作为参数。 DTO 有相当多的属性,当我对使用它们的类进行单元测试时,我并不总是关心其中的大多数属性。我经常希望能够仅使用我关心的属性集来模拟 DTO,以便将其传递给被测系统。

问题是,由于空 DTO 在实际操作中没有用,它们没有无参数构造函数,因此 Moq 无法实例化它们。我真的不想为每个单元测试设置几十个随机属性,如果我创建真正的 DTO 而不是模拟它们,我就必须这样做,那么这里最好的方法是什么?

c# unit-testing mocking nunit moq
1个回答
0
投票

正如评论所说,一种选择是使用AutoFixture,这是我最初写的(完全公开),但我不再参与其中。

还有其他类似于 AutoFixture 的库也可以做类似的事情。

如果您不想要完全随机的东西,您可能想使用测试数据生成器。它们需要更多的手动代码,但如果您与具有不同经验和技能水平的开发人员一起在代码库中工作,可能会更容易掌握。

我离开 AutoFixture 的原因是我现在用基于属性的测试来解决这些问题。 .NET 上最成熟的基于属性的测试库是FsCheck,但如果您想要 C# 原生的东西,您也可以尝试CsCheck。最后刺猬也不错

© www.soinside.com 2019 - 2024. All rights reserved.