0

mvc4 でエンティティ フレームワークを研究しようとしています。CRUD操作を使用してEFでプロジェクトを作成しました。これを単体テストしたいと思います(主に依存性注入)。いろいろサイトをググって、模擬試験法をやってみましたが、

http://www.codeproject.com/Articles/447988/How-to-Mock-Test-an-Entity-Framework-Model-First-P

しかし、うまくいきませんでした。実際、EF を単体テストするための最良の方法は何ですか? テスト用のクラスを作成するか、テスト プロジェクトを作成します。これは私の粗悪な操作コードです。これを単体テストするにはどうすればよいですか。助けてください。

Member.cs

public class Member
{
    [Key]
    public int MemID {get;set;}

    [Required]
    [Display(Name = "Member Name")]
    [StringLength(50)]
    public string MemName { get; set; }

}

メンバーコントローラー

 public class MemberController : Controller
 {
    private SampleDataContext db = new SampleDataContext();

    //
    // GET: /Member/

    public ActionResult Index()
    {
        return View(db.Members.ToList());
    }

    //
    // GET: /Member/Details/5

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

    //
    // GET: /Member/Create

    public ActionResult Create()
    {
        return View();
    }

    //
    // POST: /Member/Create

    [HttpPost]
    public ActionResult Create(Member member)
    {
        if (ModelState.IsValid)
        {
            db.Members.Add(member);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(member);
      }

    //
    // GET: /Member/Edit/5

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

    //
    // POST: /Member/Edit/5

    [HttpPost]
    public ActionResult Edit(Member member)
    {
        if (ModelState.IsValid)
        {
            db.Entry(member).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(member);
    }

    //
    // GET: /Member/Delete/5

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

    //
    // POST: /Member/Delete/5

    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        Member member = db.Members.Find(id);
        db.Members.Remove(member);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    protected override void Dispose(bool disposing)
    {
        db.Dispose();
        base.Dispose(disposing);
    }
}
4

1 に答える 1