Mock验证行为,Stub验证状态。但需要细分一下场景:
1. 需要test double提供输入时,state也是由behavior带来的,最直接的就是对方法设置一个期待结果。这种隔离在repository的mock是没问题的,也就是说,它隔离的是另外一层,而且层之间的依赖比较稳定。另外,它是一种stub用法。
2. 验证第三方输出时,比如log,这时用mock是合适的,因为第三方的state不是我们能控制的。
Mock不应该在同一层使用,同一层的依赖是更不稳定的,重构的机会很多,mock是在限制重构,让设计变得脆弱。
网友评论