0

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

除了一件事...

我的假货FacebookClient需要退货Facebook.JsonArray

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

有没有更简单的方法?

4

3 回答 3

1

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

Github 来源:https ://github.com/facebook-csharp-sdk/simple-json

于 2012-12-31T06:03:41.327 回答
0

自己找到了答案;FacebookClient.DeserializeJson做的伎俩,虽然它已被弃用。

var content = /* Previously obtained JSON string */;

var client = new Facebook.FacebookClient();

var result = client.DeserializeJson(content, null);
于 2012-12-29T20:15:42.203 回答
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);
于 2012-12-31T20:25:55.477 回答