创建一个Facebook.从字符串中获取JsonArray对象,用于测试
本文关键字:JsonArray 获取 对象 测试 用于 字符串 Facebook 一个 创建 | 更新日期: 2023-09-27 17:49:48
我在我的项目中使用Facebook c# SDK,出于测试目的,我希望能够剔除FacebookClient
并插入我自己的假客户端,这将返回预定义的Facebook API调用响应(我只在我的应用程序中调用FacebookClient.Get
方法)。使用工厂模式和可配置的StructureMap设置非常容易实现。
除了一件事…
我的假FacebookClient
需要返回Facebook.JsonArray
对象。
我一直在筛选SDK源代码,可以看到SimpleJson
类可以用来创建JsonArray
对象。然而,它被标记为内部的,除非我开始搞乱和重建SDK。
有更简单的方法吗?
应该直接使用SimpleJson。你可以通过"SimpleJson"NuGet包或Github获得它。基本上,我们不希望人们使用Facebook c# SDK作为JSON序列化器-这就是为什么我们将您引用的方法标记为已弃用。
Github源码:https://github.com/facebook-csharp-sdk/simple-json
自己找到了答案;FacebookClient.DeserializeJson
可以做到这一点,尽管它已被弃用。
var content = /* Previously obtained JSON string */;
var client = new Facebook.FacebookClient();
var result = client.DeserializeJson(content, null);
您也可以尝试使用Facebook.Moq
进行测试。https://github.com/prabirshrestha/Facebook.Moq
安装包Facebook。Moq
var mockFb = FacebookMock.New();
mockFb
.FbSetup()
.ReturnsJson("{'"id'":'"4'",'"name'":'"Mark Zuckerberg'",'"first_name'":'"Mark'",'"last_name'":'"Zuckerberg'",'"link'":'"http:''/''/www.facebook.com''/zuck'",'"username'":'"zuck'",'"gender'":'"male'",'"locale'":'"en_US'"}");
var fb = mockFb.Object;
dynamic result = fb.Get("/4");
Assert.Equal("Mark Zuckerberg", result.name);