-1

コントローラーアクションがあります

  [HttpPost]
   public ActionResult CreateFocus(FocusFormModel focus)
    {
        var errors = focusService.CanAddFocus(Mapper.Map<FocusFormModel, Focus>(focus)).ToList();

        ModelState.AddModelErrors(errors);
        if (ModelState.IsValid)
        {
            focusService.CreateFocus(Mapper.Map<FocusFormModel, Focus>(focus));
            var createdfocus = focusService.GetFocus(focus.FocusName);
            return RedirectToAction("Focus", new { id = createdfocus.FocusId });
        }
        return View("CreateFocus", focus);
    }

このアクションは正常に機能していますが、単体テストを記述しているときにエラーが表示されます

オブジェクト参照がオブジェクト インスタンスに設定されていません

ユニテストは

 [Test]
    public void Create_Focus()
    {
        // Arrange                    
        GroupController controller = new GroupController(groupService);
        // Act


        FocusFormModel focus = new FocusFormModel();
           focus.GroupId  = 1;
            focus.FocusName = "t";
            focus.Description = "t";

        Mapper.CreateMap<FocusFormModel, Focus>().ForAllMembers(opt => opt.Ignore());
        Mapper.AssertConfigurationIsValid();
        var result = (RedirectToRouteResult)controller.CreateFocus(focus);
          Assert.AreEqual("Index", result.RouteValues["action"]);
     }

私のモデルは以下のとおりです

public class Focus
{
    public int FocusId { get; set; }

    [StringLength(50)]
    public string FocusName { get; set; }

    [StringLength(100)]
    public string Description { get; set; }

    public int GroupId { get; set; }

    public virtual Group Group { get; set; }

    public DateTime CreatedDate { get; set; }



    public Focus()
    {
        CreatedDate = DateTime.Now;
    }
}

そして私は自分のビューモデルを次のように書いています

public class FocusFormModel
{
    public int FocusId { get; set; }
    [Required(ErrorMessage = "*")]
    [StringLength(50)]
    public string FocusName { get; set; }
    [Required(ErrorMessage = "*")]
    [StringLength(100)]
    public string Description { get; set; }

    public int GroupId { get; set; }

    public virtual Group Group { get; set; }

    public DateTime CreatedDate { get; set; }

    public FocusFormModel()
    {
        CreatedDate = DateTime.Now;
    }
}

誰か助けてくれませんか

4

1 に答える 1

0

この行は、実際には null 参照例外を取得する 2 つの機会を提供します。

var errors = focusService.CanAddFocus(Mapper.Map<FocusFormModel, Focus>(focus)).ToList();

まず第一focusServicenull

focusService が null でない場合、メソッド呼び出しCanAddFocus(Mapper.Map<FocusFormModel, Focus>(focus))が返される可能性がありますnull

それは単なる仮定です。
Greg Smith が言ったように、スタック トレースはここで非常に役立ちます。

于 2012-12-02T09:26:29.110 に答える