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);
}
}