単体テストケースを書くのが初めてです。 User.Identity
にエラーが表示されます。私は嘲笑がそれのための解決であることを見ました、そして、私は私の場合にはうまくいきませんでした。私はここでユーザーIDのヌル参照
[TestMethod()]
public void createStage ()
{
EnthiranStageViewModel enthiranStage = new EnthiranStageViewModel
{
StageType=0,
TriggerBeginType = Akton.Areas.Challenge.Models.TriggerType.Manual,
TriggerEndType= Akton.Areas.Challenge.Models.TriggerType.Manual,
TimeLimit = new TimeSpan(9, 6, 13),
TriggerBeginTime= new DateTime(2016, 09, 3, 9, 6, 13),
TriggerEndTime= new DateTime(2016, 09, 3, 9, 6, 13),
StartValueType= Akton.Areas.Challenge.Models.StartValueType.Global,
StageDate= new DateTime(2016, 09, 3, 9, 6, 13),
Proforma=25,
GameId=19,
CreatedTime=new DateTime(2016, 09, 3, 9, 6, 13),
UpdatedTime= new DateTime(2016, 09, 3, 9, 6, 13),
StageName="Test",
};
EnthiranController controller = new EnthiranController();
JsonResult actual = controller.CreateStage(enthiranStage) as JsonResult;
var result = actual.Data;
Assert.AreEqual("{ success = True }", result.ToString());
}
私はしているがViewModel.Logs.ApplicationLogViewModel
でuserId
を渡すために私のコード
マイコントローラー
public ActionResult CreateStage (EnthiranStageViewModel enthiranStage)
{
if (ModelState.IsValid)
{
Stage stage = enthiran.Insert_Stage(enthiranStage);
//logging Stage Creation
util.ApplicationLog(new ViewModel.Logs.ApplicationLogViewModel
{
GameCategorys = GameCategory.Enthiran,
Event = Events.EnthiranStageCreation,
SessionAttemptId = null,
UserId = User.Identity.GetUserId<int>(),
OptionalParameter1 = enthiranStage.GameId,
OptionalParameter2 = stage.Id,
Description = "Enthiran stage created"
});
return RedirectToAction("Stages", new
{
id = stage.GameId
});
}
return View();
}
以下である私のテストケースを追加している、私はどのようにそれを行うには考えています。
userId
は、どのようにしてapplicationLogViewModel
を通過しますか?
public interface IUserContext
{
public IPrincipal User {get;}
}
コントローラにコンストラクタによってそれを渡すと、ユーザーを取得するために、そのコンテキストを使用します。
チェックhttps://stackoverflow.com/questions/40230776/how-to-mock-httpcontext-user/40234602#40234602 – Nkosi
チェックhttp://stackoverflow.com/a/39453132/5233410 – Nkosi
あなたはすべきまた、テスト中のメソッドがビュー結果を返すか、アクション結果にリダイレクトすることができますが、単体テストはJSON結果をチェックしていることに注意してください。 'actual'変数が' null 'になる – Nkosi