开发项目过程中辅助方法好处多多2011-06-06 博客园 Jeffrey Zhao在开发项目过程中,总是会出现大量的辅助方法,例如字符串处理,代码检 验,格式输出等等。如果您发现自己在多次编写类似的代码,可能就要想着如何 把这些代码进行提取,变成辅助方法(亦或是类库甚至框架,关于这方面粒度问 题在此不作讨论)。辅助方法的作用除了遵循DRY原则之外,也能让代码更容易 编写,更为清晰,可读性也能更好——而且只要您“去做”,就会发现要得到这 些好处并不困难。在这里举一个最简单的例子,对Index方法的单元测试:[TestMethod]
public void IndexTest()
{
UserIdentity identity = new UserIdentity();
Mock<HomeController> mockController = new Mock<HomeController>() { CallBase = true };
mockController.Setup(c => c.Identity).Returns (identity);
var result = mockController.Object.Index() as ViewResult;
if (result == null)
{
throw new Exception("result is expected to be ViewResult but not.");
}
Assert.AreEqual("", result.ViewName,
"the view name is expected to be the default one but "{0}"", result.ViewName);
Assert.AreEqual("", result.MasterName,
"the master name is expected to be the default one but "{0}"", result.MasterName);
var model = result.ViewData.Model as IndexModel;
if (model == null)
{
throw new Exception("model is expected to be IndexModel but not.");
}
Assert.AreEqual(identity, model.Identity);
Assert.AreEqual("Welcome to ASP.NET MVC!", model.Message);
}
从“var result = ...”这一行代码开始到结尾,都是对Index方法调用结果 的断言,其中包括以下几点:返回值为ViewResult对象ViewName是默认值MasterName是默认字符串Model为IndexModel对象Model的各属性为正确的值这不可或缺的五点要求总共占用了十几行代码(虽然它们都非常清晰明白) 。如果每个单元测试方法都需要编写这些代码,这无疑是一件令人乏味的事情。 这时,您就可以提供辅助方法来简化单元测试的编写。