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.InvalidCastException:无法将“System.web.Mvc.ViewResult”类型的对象转换为>“System.Web.mvc.RedirectToRoutResult”类型

有人可以帮我找出问题吗?

4

1 回答 1

1

您从操作中返回 a ViewResult,并尝试将其用于RedirectToRoutResult测试。


这与实体框架无关,但我通常避免使用 EF 对象作为模型,原因如下:

  • 难以用属性装饰类(如果您使用数据注释)
  • 序列化几乎总是失败:Member是一个Employee谁有一个Manager谁有一个...它永远不会结束DepartmentRoom
  • 当 MVC 在 POST 之后创建和填充您的实体时,更容易犯安全错误。
于 2013-10-09T10:21:04.293 回答