いくつかの単体テストを実行するためにセッション変数を設定しようとして失敗しました。セッション変数を設定しようとすると、「System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示され続けます。
これが私が構築しているテストです:
[TestMethod]
public void MyMethod()
{
//Arrange
int id = 12345;
string action = "A";
string comment = "";
string user = "user";
var controller = new MyController();
//Act
controller.Session["altUser"] = user;
var result = controller.Process(id, action, comment);
//Assert
Assert.IsNotNull(result);
}
そして、これが私のコントローラーです:
[Authorize]
public class MyController : Controller
{
public ActionResult Process(int id, string action, string comment)
{
string userId = Session["altUser"].ToString();
//some other stuff that evaluates ID, Action, and Comment
}
}
ただし、アプリケーション自体を実行すると、エラーは発生せず、アプリケーションは正常に機能します。私は、テスト駆動開発では、テストが実装への道を開くはずであることを理解しています。すでに実行されているアプリケーションの単体テストを練習しようとしています。可能であれば、アプリケーションは機能するので、実装に変更を加えることは避け、ユニットテストを作成して、すでに知っていることをサポートしたいと思います。