我在我的项目中使用Facebook C# SDK并且出于测试目的,希望能够存根FacebookClient
并插入我自己的假客户端,该客户端将返回对Facebook API的预定义响应调用(我只在我的应用程序中调用FacebookClient.Get
方法)。使用工厂模式和可配置的StructureMap设置很容易实现这一点。
除了一件事......
我的假FacebookClient
需要返回Facebook.JsonArray
个对象。
我一直在筛选SDK源代码,可以看到SimpleJson
类可用于创建JsonArray
个对象。但它被标记为内部,除非我开始搞乱并重建SDK。
有更简单的方法吗?
答案 0 :(得分:1)
你应该直接使用SimpleJson。您可以通过“SimpleJson”NuGet包或Github获取它。基本上,我们不希望人们使用Facebook C#SDK作为JSON序列化程序 - 这就是我们将您引用的方法标记为已弃用的原因。
答案 1 :(得分:0)
自己找到答案; FacebookClient.DeserializeJson
可以解决这个问题,虽然它已被弃用。
var content = /* Previously obtained JSON string */;
var client = new Facebook.FacebookClient();
var result = client.DeserializeJson(content, null);
答案 2 :(得分:0)
您也可以尝试使用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);