由于项目原因,我需要快速学习moq framework,本着实践出真知的原则,我打开了visual studio,打算尝试真实的使用moq,写一些实验代码来学习学习。在随意写了一些使用moq代码后,我渐渐发现了以下问题:
- 因为我是随手写的,写完之后很快就有又更改了,所以之前写过什么很快就忘记了
- 就算我把之前写的代码全部保留,我也很难确定之前的代码是否会对之后的代码产生影响(比如某些全局变量在前面被打开,但是没有关闭,会影响到后面功能的运行)
- 当我全部写完之后再回过头来复习,我无法很快明确我第一段代码表述的内容,毕竟是没有接触过的框架(估计自己真的老了)
那么,我到底想要干什么的输出结果才满意呢?
- 一些独立的代码片段,里面包含新框架的使用方法
- 可以运行!!!
- 最好能让我通过代码马上能明确我的目的(比如是这段代码是使用框架来写文件,还是弹出对话框)
终于,我找到了完全满足我需求的方式,那就是写测试
[Test] public void should_get_what_you_setup() { var mock = new Mock<A>(); mock.Setup(m=> m.F()).Returns(1); mock.Object.F().ShouldBe(1); }
上面就是我写的测试,你也可以叫它为可运行的文档。接着在半小时之内,我大概写出了20多个测试来,不,应该是可运行的文档,看着这些文档,装逼的认为比官网上提供的文档要好的多。
当我们在学习新知识时,尽量让自己的学习有输出,而且输出具有高可读性,上下文相关,甚至可运行,这样该多好呀~~反观有些项目,除了可以运行之外,代码及不可读,也不能快速提供上下文,就那么静静的躺在那里,没有一个人敢碰。如果我们给它加上测试,让每一个方法都有一个可以运行的文档,你还会说遗留代码是个坑么?
下次你在学习新知识的时候,不妨尝试一下吧~~