gpt4 book ai didi

.net - 在 .NET YouTube GData API 中模拟对象

转载 作者:行者123 更新时间:2023-12-01 05:35:28 24 4
gpt4 key购买 nike

我编写了一个使用 C# GData YouTube API 的服务类。 API 的典型使用包括向 YouTubeRequest 发出请求。对象,它调用 YouTube 网络服务并以 Feed 的形式反序列化 JSON 格式的响应, Video , 或 Playlist包含大量 C# 属性形式的数据的实例。

我想对这个服务类进行单元测试。在我的代码中,YouTubeRequest object 是一个外部依赖,它需要被模拟,但它没有实现任何接口(interface),所以我被迫添加了我自己的抽象层。该层具有返回这些 Video 的方法。和 Playlist我正在尝试使用 Moq 创建一个模拟对象,该对象创建一个虚拟对象 Video具有测试数据的实例,但 Video 上的许多属性类是只读的,这些 Video , Playlist , 和 Feed对象很难构建,通常需要 YouTube 框架中其他类型的实例。

我对单元测试很陌生,但从我看到的 Rob Conery 的视频来看,有一些框架对单元测试不友好,比如 ASP.NET Webforms。

在这种情况下我该怎么办?我是否对 YouTubeRequest 进行了抽象?对象不正确?我意识到这个添加的抽象层应该非常简单,但是如果我添加对映射层的调用,我可以将数据映射到我自己的类型。模拟返回我的类型的接口(interface)会容易得多,因为我可以允许获取和设置属性并轻松创建虚拟数据。虽然与 YouTube 交互的代码相对较小,但我预计随着时间的推移它的大小和复杂性会增加,因此完全放弃单元测试的想法很麻烦。

最佳答案

我已经成功生成了假假人 VideoPlaylist对象并让我的模拟实现返回它们。尽管这些类型的某些属性是只读的,但我发现了另一个属性,称为“AtomFeed”,它是一个 get & set 属性。事实证明,Video 上的所有只读属性和 Playlist对象从通过 AtomFeed 属性提供的对象中检索其数据。我通过阅读 YouTube .NET Client Library 的源代码发现了这一点。 .归根结底,我的问题源于我自己滥用 YouTube 库。因此,这个答案只解决了我与 YouTube 库有关的特定问题,而不是与模拟必须返回复杂、不可设置属性的接口(interface)相关的一般问题。

关于.net - 在 .NET YouTube GData API 中模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8947210/

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