私はそれを動作させることができますが、私はベストプラクティスが何であるか、なぜそうであるかを知りたいと思います。私はコントローラ、モデル、リポジトリを持っており、今はコントローラのユニットテストをしたいと思います。私はちょうど正しいビューが返されていることを確認するための簡単なテストを書いています。ユニットのコントローラのテスト - 接続文字列の処理方法
これは、コントローラの私の方法であって、ここで
public ActionResult Selections(SelectionsViewModel model)
{
for (int i = 0; i < model.Sends.Count; i++)
{
Send send = new Send(new SendService(new Database().GetConnectionString()))
{
SendID = model.Sends[i].SendID,
Title = model.Sends[i].Title,
Subject = model.Sends[i].Subject,
SentDate = model.Sends[i].SentDate,
TimesViewed = model.Sends[i].TimesViewed,
Include = model.Sends[i].Include,
Exclude = model.Sends[i].Exclude
};
send.UpdateIncludeExclude();
}
return View(model);
}
は私のSendServiceのコンストラクタを介して送信されているDatabaseクラスの私のGetConnectionString()メソッドです。
public string GetConnectionString()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["DEVConnectionString"].ToString();
}
そして最後に、私のユニットテスト:
[Test]
public void TestAssignmentSelections()
{
var obj = new AssignmentController();
var actResult = obj.Selections() as ViewResult;
NUnit.Framework.Assert.That(actResult.ViewName, Is.EqualTo("Selections"));
}
は今、私のユニットテストは失敗し、私はその理由を取得。私のユニットテストプロジェクトは、接続文字列がどこにあるかをテストしているプロジェクトのweb.configへのアクセス権がありません。
私はいくつかの調査を行いました。明らかに、単体テストプロジェクトにweb.configを追加し、そこに接続文字列を入れても動作するようになりますが、それはハックのようです。
これについてはどのような方法が最適ですか?これに対応するコードを書く別の方法がありますか?
これは参考になりましたが、変更する必要があると思います。ありがとうございました。 – halterdev