要区分stub与mock在缺少编程实践经验的时候有些困难。
中文大意
Stub,在另一方面有不同的目的:他们并不记录或验证预期,而是允许我们在替换 fake对象的行为,以便利用测试一个测试场景。
A mock is something that as part of your test you have to setup with your expectations. A mock is not setup in a predetermined way so you have code that does it in your test. Mocks in a way are determined at runtime since the code that sets the expectations has to run before they do anything.
stub从字面意义上来说是存根,存根可以理解为我们保留了一些预留的结果。这个时候我们相当于构建了这样一个特殊的测试场景,用于替换诸如网络或者IO口调度等高度不可预期的测试。如当我们需要去验证某个api被调用并返回了一个结果,举例在最小物联网系统设计中返回的json,我们可以在本地构建一个[{"id":1,"temperature":14,"sensors1":15,"sensors2":12,"led1":1}]的结果来当我们预期的数据,也就是所谓的存根。那么我们所要做的也就是解析json,并返回预期的结果。当我们依赖于网络时,此时测试容易出现问题。
mock从字面意义上来说是模仿,也就是说我们要在本地构造一个模仿的环境,而我们只需要验证我们的方法被调用了。
围观我的Github Idea墙, 也许,你会遇到心仪的项目