2013-10-09 18 views
0

我在MVC4中的实体框架工作中生成了一个CRUD操作。现在我正在测试该课程。我在控制器中使用以下代码Details在实体框架中测试视图模型

public ActionResult Details(int id = 0) 
    { 
     Member member = db.Members.Find(id); 
     if (member == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(member); 
    } 

而我的测试代码,

[TestMethod] 
    public void Details() 
    { 
     MemberController me = new MemberController(); 
     var mem = new Member(); 
     int id = 1; 
     var result = (RedirectToRouteResult)me.Details(id); 
     Assert.AreEqual("Index", result.RouteValues["action"]); 
    } 

测试时它显示,

测试失败:详细

消息:试验方法SampleTest.MemberTest.Details抛出异常:

System.Inval idCastException:无法投型“System.web.Mvc.ViewResult”到的对象>键入“System.Web.mvc.RedirectToRoutResult”

任何人可以帮我找出这个问题?

+0

'mem'变量很混乱。 –

+0

你似乎不是在嘲笑Db,所以'id == 1'只是产生一个成员。 –

+0

@Henk:mem是包含视图模型的成员模型的实例 – neel

回答

1

您从动作中返回ViewResult,并尝试将其转换为RedirectToRoutResult的测试。


这已无关,与实体框架,不过,我通常避免使用EF对象为模型,有以下几个原因:

  • 难度与属性的装饰类(如果您正在使用数据注释)
  • 序列化几乎总是失败:MemberEmployee谁拥有Manager谁有Department其中有Room s ...它永远不会结束。
  • 当MVC在POST后创建并填充实体时,更容易出现安全错误。