0

外部 API から JSON を解析するサービスがあります。

このサービスは次のことを行います。

  1. API への URI を構築します
  2. 返された JSON を読み取ります
  3. 関連する C# オブジェクトに逆シリアル化します
  4. 自分のドメイン エンティティにマップする
  5. データベースに保存

手順 1 ~ 4 の単体テストを試みています (5 はこのテストの範囲外です)。

そのため、私は Web API にアクセスしたくありません。むしろ、「サンプル」JSON ファイルをテスト プロジェクトにローカルに保存しています。

このファイルを読み取って Uri オブジェクトに構築するにはどうすればよいですか?

例えば:

var uri = new Uri("myfile.json");

「URI の形式が正しくありません」というエラーが表示されます。

ファイルは [ビルド アクション: 埋め込みリソース] に設定され、[出力ディレクトリにコピー: 常にコピー] に設定されます。

私は C# .NET 4.5 (VS 2012) を使用しており、テストには XUnit を使用しています。

4

2 に答える 2

0

スキームと出力ディレクトリへの完全修飾パスを使用しfile:ます。これは、テストの実行元と同じである必要があります。

var fqn = Assembly.GetExecutingAssembly().Location;
var uri = new Uri("file://" + fqn + "/myfile.json");

詳細については、 http://en.wikipedia.org/wiki/File_URI_schemeを参照してください。

于 2013-01-15T05:01:30.300 に答える
0

@ RPM1984 によるヒントが答えを示唆しています。私はちょうどこの問題に遭遇し、次のハックが私のためにそれをしました:

string fqnModified = "\\" + fqn;
Uri uri = new Uri(fqnModified);
于 2014-01-26T02:39:05.367 に答える