我正在通过Pro ASP.NET MVC 5工作,刚刚编写了这个方法:
public ViewResult Edit(int productId)
{
Product product = repository.Products.FirstOrDefault(x => x.ProductID == productId);
return View(product);
}
这对我来说似乎很简单,但作者然后为它写了一个单元测试。该测试使用MOQ创建一个模拟存储库对象,因此唯一被测试的是linq。作者是否将测试作为单元测试的另一个例子,或者这是正常的做法?在我看来,linq通常可以工作并且编写我自己的测试是多余的,但这是我第一次接触单元测试。
答案 0 :(得分:3)
这取决于测试的编写方式,但它可能比这更多。 例如,如果模拟存储库已使用具有指定productId的Product播种,并且测试还验证从查询返回了所播种的相关Product对象,则测试将验证该函数是否与产品正确匹配指定id并返回适当的视图。
通过额外的测试,该测试不会将产品植入存储库,测试可以验证不正确的产品不匹配,并且当产品不存在时会发生正确的行为。
虽然这个例子看起来微不足道,但单元测试的目的不仅仅是测试现在的功能,而是创建一个可重复的测试,该测试在代码的生命周期中存在,确保在将来的所有维护中没有任何细微的变化。介绍导致行为改变。
孤立地,许多测试似乎微不足道,甚至毫无意义。它们在产品的长期维护过程中提供了一层保护,以防止出现问题。