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

ViewResultアクションからa を返し、それをRedirectToRoutResultテストにケース化しようとします。


これは Entity Framework とは関係ありませんが、それでも、私は通常、EF オブジェクトをモデルとして使用することを避けています。これにはいくつかの理由があります。

  • クラスを属性で装飾するのが難しい (データ注釈を使用している場合)
  • シリアライゼーションはほとんどの場合失敗します: Memberis an Employeewho has a Managerwho have a Departmentwhich has Rooms... 終わりません。
  • MVC が POST 後にエンティティを作成してデータを入力すると、セキュリティ上の間違いを犯しやすくなります。
于 2013-10-09T10:21:04.293 に答える