2

私は自分の統合テストで開発環境でテストが実行されるときに特定の接続文字列を設定し、テストがステージング環境で実行されるときには他の接続文字列を設定します。Visual Studioでのテストでasp.netコア環境変数を使用する方法

私はテストモードではないとき、私は単にマシン上で環境変数を設定し、すべて正常に動作します。しかしテストでは私はUseEnvironment(envX)を使用することができますが、それはすべてのマシンでenvXになるか、このメソッドを使用せず、デフォルトのもの(プロダクション)を取得します。

私の統合テストでは、環境ベースの複数の接続文字列を使用するにはどうすればよいですか?

答えて

3

UseEnvironment(envX)を使用する代わりに、テストを実行する前に環境変数ASPNETCORE_ENVIRONMENTを設定することができます。

I.e. SET ASPNETCORE_ENVIRONMENT=TestSET ASPNETCORE_ENVIRONMENT=SomeOtherEnvironment

+0

ローカルで最初にあなたのPowerShellウィンドウで環境変数を設定することができますDOTNETテストを実行している場合は? 私はcmdでこのコマンドを実行しますが、デバッグテストではenv.nameがまだ生産されていることがわかります – arielorvits

+1

Visual Studioで実行している場合は、現在実行できないと思います。コンソールから実行している場合や小さなスクリプトを作成している場合は、まず環境変数を設定してから 'dotnet test'を実行してください。 – henningst

3

あなたが統合テストコードで環境を確認するためにIHostingEnvironmentを使用する場合は、あなたがIHostingEnvironment.EnvironmentNameで値をオーバーライドすることがあります。

//IHostingEnvironment env; 

env.EnvironmentName = 'Development'; 
env.IsDevelopment() // return true; 

env.EnvironmentName = 'TEST'; 
env.IsDevelopment() // return false; 
env.IsEnvironment('TEST') // return true; 
+0

これは、複数のenvで同じテストを実行する際にどのように役立ちますか? envXで同じテストを実行する必要があります。 – arielorvits

0

たぶん、今あなたがhereを見ることができるように何の解決策が存在しないため。 私はここで他の答えやこのリンクの回答を待っています。

0

あなたは、私はVisual Studioでユニットテストを実行しているときに私は、環境変数を設定し

$env:ASPNETCORE_ENVIRONMENT="test" 
dotnet test 
関連する問題