0

私はプロジェクトでFacebookC#SDKを使用しており、テスト目的で、Facebook API呼び出しに事前定義された応答を返す独自の偽のクライアントをスタブして挿入できるようにしたいと考えています(メソッドをFacebookClient呼び出すのは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

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 に答える
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 に答える