gpt4 book ai didi

c# - 设置包含对其他复杂对象的循环引用的复杂对象以进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:04 26 4
gpt4 key购买 nike

我正在对依赖于其他存储库接口(interface)和服务接口(interface)的业务服务进行单元测试。这些依赖项返回包含对其他复杂对象的循环引用的复杂对象。我正在使用 MOQ 来模拟这些依赖项并设置它们的例程以返回复杂对象。然后我验证被测业务服务是否返回正确的结果。

由于这些复杂对象的复杂性,创建一个表示这些复杂对象的 JSON 文件并将其反序列化为我正在设置的模拟对象是否是个好主意?你有什么想法?

需要完全填充以进行测试的复杂对象示例:

public class Foo{
property int Id {get; set;}
property virtual ICollection<Bar> Bars {get; set;}
}

public class Bar{
property int Id {get; set;}
property int BarId {get; set;}
property virtual Foo Foo {get; set;}
}

最佳答案

我个人不喜欢这个想法。通过在代码中创建对象,您可以获得 2 个非常巨大的好处。

  1. 如果您更改了对象结构并且在测试中没有进行相同的更改,则会出现编译时错误。
  2. 工具自动对对象定义进行级联更改的可能性流向测试中的代码(例如 VS、Resharper)。

也许还有其他工具可以帮助缓解这些问题,但为什么在不需要时引入更多复杂性。

事实上,除非您的应用程序实际上以完全相同的方式创建您的对象,否则在创建那些特定于您使用的有助于隐藏缺陷的反序列化器的对象时可能会有一些细微的差别。

关于c# - 设置包含对其他复杂对象的循环引用的复杂对象以进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809201/

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