2017-03-09 6 views
1

私はナンシーセルフホスティング機能を使用してユニットテストを行っています。 (ナンシーAPIプロジェクトとは別の)私のユニットテストプロジェクトから、私は私のAPIのインスタンスを作成するために、次のコードを使用:ブートストラップで.NETナンシーセルフホスティング設定ファイルがありません

var myApp = new NancyHost(new Uri(MockRestApiUrl), new Bootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } }); 

を私がする設定ファイルのセットを探し、いくつかのコードを持っていますメモリにプリロードする。これらは、提供される静的ファイルではなく、APIの構成を駆動するファイルであることに注意してください。

問題は、探している構成ファイルが見つからないためにブートストラップが例外を生成することです。私はRootPathProvider.GetRootPath()を経由して設定ファイルのパスを設定および取得:

Cを:... \のAppData \ローカル\一時\のb3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3 \ b3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3 \アセンブリ\のDL3 \ bf80d16d \ b3b00d8e_bd91d201 \ Mapping \ PropertyMapping.json

フォルダを見ると、マッピングフォルダと設定ファイルがありません。私はこれらをVisual Studioで 'Content'と 'Copy Always'としてマークしてみましたが、何度か自分のソリューションをクリーンアップしましたが、運はありません。これらのファイルを自己ホストサイトにコピーするにはどうすればよいですか?

答えて

0

私のモジュールの注入されたパスプロバイダが私に 'AppData ...'パスを与えていた理由はまだ分かりません。

public class SelfHostRootPathProvider : IRootPathProvider 
{ 
    public string GetRootPath() 
    { 
     return AppDomain.CurrentDomain.BaseDirectory; 
    } 
} 

そして、私のアプリのブートストラップから派生したクラスに:しかし、私は次のようにラウンドを取得しました

public class IntegrationBootstrapper : Bootstrapper 
{ 
    protected override IRootPathProvider RootPathProvider 
    { 
     get { return new SelfHostRootPathProvider(); } 
    } 
} 

そして、あなたがインスタンス化が必要な場合:

解決さ
 var myApp = new NancyHost(new Uri(ServiceUrl), new IntegrationBootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } }); 

私の単体テストプロジェクトのデバッグフォルダへのパス。私はその後、すべての設定ファイルがユニットテストプロジェクト(Add - > Existing Item - > Add as link)にリンクされ、両方のプロジェクトでVisual StudioでContent/Always Copyとして設定されていることを確認しなければなりませんでした。

関連する問題