【发布时间】:2013-03-03 14:02:22
【问题描述】:
我通常不会在这里寻找每个问题的答案,而是更多指向学习资源的链接,也许还有关于我的一些观点的建议
我正在尝试在我的一个项目中实施单元测试,但我找不到任何足够详细的教程(最好是视频教程)。
A- 1. 我如何将关注点分开足够以单独对我的功能进行单元测试?
A- 2. 我应该最关注什么测试以及我应该在哪里划清界限?
A- 3. 单个单元测试应涵盖哪些内容,我应该在什么时候将其分解为 2 个单元测试?
所以我使用 Code First 我已经建立了一个产品模型、控制器和视图:
//
// GET: /Product/Edit/5
public ActionResult Edit(int id = 0)
{
Product product = db.Products.Find(id);
if (product == null)
{
return HttpNotFound();
}
return View(product);
}
//
// POST: /Product/Edit/5
[HttpPost]
public ActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
[TestMethod]
public void TestEditView() {
// Arrange
ProductController controller = new ProductController();
// Act
ViewResult result = controller.Edit(2) as ViewResult;
// Assert
//make sure theres a result
Assert.IsNotNull(result);
//make sure it's the right results
Assert.AreEqual("Edit", result.ViewName);
//test a dropdownlist exists
Assert.IsNotNull(result.ViewBag.CategoryID);
}
B- 1. 我应该如何测试我的 POST 方法?我应该为数据管理添加一个额外的层,以便我可以编写单元测试来单独测试吗?
B- 2. 我应该更多地关注检查返回的视图还是更多地关注数据 (例如:如果我有一个 Edit.cshtml 那么它总是会返回(为什么要测试它?),返回的数据更重要不是吗?还是我的黑匣子更重要?或者我应该覆盖所有 3 个?)
B- 3. 我应该分解我的单元测试来分别测试视图和数据吗?
同样,有很多问题,但我认为我主要是在寻找示例、教程和方法,以尽可能地了解如何使用单元测试(甚至 MVC)。
【问题讨论】:
标签: entity-framework asp.net-mvc-4 ef-code-first