我通常不会在这里寻找每个问题的答案,而是更多指向学习资源的链接,也许还有关于我的一些观点的建议
我正在尝试在我的一个项目中实施单元测试,但我找不到任何详细的教程(最好是视频教程) 。
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)。