从字符串创建Facebook.JsonArray对象,以进行测试

时间:2012-12-29 19:21:55

标签: c# facebook facebook-c#-sdk

我在我的项目中使用Facebook C# SDK并且出于测试目的,希望能够存根FacebookClient并插入我自己的假客户端,该客户端将返回对Facebook API的预定义响应调用(我只在我的应用程序中调用FacebookClient.Get方法)。使用工厂模式和可配置的StructureMap设置很容易实现这一点。

除了一件事......

我的假FacebookClient需要返回Facebook.JsonArray个对象。

我一直在筛选SDK源代码,可以看到SimpleJson类可用于创建JsonArray个对象。但它被标记为内部,除非我开始搞乱并重建SDK。

有更简单的方法吗?

3 个答案:

答案 0 :(得分:1)

你应该直接使用SimpleJson。您可以通过“SimpleJson”NuGet包或Github获取它。基本上,我们不希望人们使用Facebook C#SDK作为JSON序列化程序 - 这就是我们将您引用的方法标记为已弃用的原因。

Github来源:https://github.com/facebook-csharp-sdk/simple-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);