私は検索しましたが、回答が得られませんでした。私は2つのASP.NETプロジェクトを持っています。そのうちの1つは私のプロジェクト、もう1つはユニットテストを含むプロジェクトです。 Project.Core
でC#単体テスト内にConfigurationManagerを挿入
# Projects
Project.Core
...
secretConnectionStrings.config
Web.config
Project.Tests
、私はsecretConnectionStrings.config
からの接続文字列(とweb.configファイルから設定アプリの両方を要求する方法を持っている。それ自身の上で実行される、正しい値は、これらの設定ファイルの両方から引っ張られます。しかし、私は私のユニットテストの中にこれをテストしたい
私のテストでは、このようになります(Project.Tests
以内):。
[TestClass]
public class TestUserController
{
[TestMethod]
public void Post_ShouldReturnNewUser()
{
var controller = new UserController();
var result = controller.Post() as User;
Assert.AreNotEqual(result, null);
}
}
アウトのラインがそれ爆弾は、この
ですstring cacheConnection = ConfigurationManager.ConnectionStrings["RedisCache"].ConnectionString;
System.NullReferenceException:オブジェクト参照オブジェクト
のインスタンスに設定されていない私は私のProject.Tests
溶液中のリンクとしてweb.config
とsecretConnectionStrings.config
を追加しようとしました。それはうまくいきません。私はweb.configにインターフェイスしたくありません。(値はProject.Core
に保存されていますから)。私はProject.Core
のweb.configからユニットテストに値を引き出すことができる解決策がありますか?
ユニットテストは別のプロジェクトにあります。そのプロジェクトに接続文字列を追加する必要があります。 – kat1330
これに頼る方法はありませんか?私は2つのプロジェクトの2つの設定ファイルを維持することによって失敗する可能性のある別のものを紹介したくありません。 – Zac
実際のコードでラッパーを使用し、単体テストでラッパーを偽装してConfigurationManagerのラッパークラスを作成することを検討しましたか? – lilactiger89