C# visual studio 2012中的单元测试积垢操作
我正在Visual Studio 2012中测试create类 我的控制器类是:C# visual studio 2012中的单元测试积垢操作,c#,entity-framework,unit-testing,asp.net-mvc-4,C#,Entity Framework,Unit Testing,Asp.net Mvc 4,我正在Visual Studio 2012中测试create类 我的控制器类是: public ActionResult Create() { return View(); } // // POST: /Member/Create [HttpPost] public ActionResult Create(Member member) { if (ModelState.IsValid)
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);
}
[TestClass]
public class MemberTest
{
[TestMethod]
public void Create(Member mem)
{
mem.MemID = 123;
mem.MemName = "sruthy";
/// dont know what is writing.
}
}
测试等级为:
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);
}
[TestClass]
public class MemberTest
{
[TestMethod]
public void Create(Member mem)
{
mem.MemID = 123;
mem.MemName = "sruthy";
/// dont know what is writing.
}
}
SampleDataContext.cs
public class SampleDataContext:DbContext
{
public DbSet<Member> Members { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
公共类SampleDataContext:DbContext
{
公共数据库集成员{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
我被困在测试用例中,请帮助我。我在单元测试中理解的是:“只测试你的方法在做什么”,所以我认为你必须测试你的方法是否做得很好:
- ModelState.IsValid
- db.Members.Add(成员)
- db.SaveChanges()
我不是单元测试方面的专家,但我认为为了解耦对象,您必须考虑所有的体系结构。这允许您用mock替换真实对象。首先-为数据访问代码创建一个抽象(mock DbContext不是很方便的事情): 让你的控制器依赖它
public MemberController(IMemberRepository repository)
{
this.repository = repository;
}
这将允许轻松地访问模拟数据代码。接下来-编写验证控制器行为的测试(我在这里使用NUnit和Moq):
这正是我想写的答案这也需要清理的
[TearDown]
方法?@christiandev因此在每次测试运行之前为字段分配新的值,您不需要在这里拆卸什么是“RedirectToRouteResult”?
[HttpPost]
public ActionResult Create(Member member)
{
if (ModelState.IsValid)
{
repository.Add(member);
return RedirectToAction("Index");
}
return View(member);
}