我目前正在使用Mockito在Spring MVC应用程序中模拟我的服务层对象的过程中,我想在其中测试我的Controller方法。但是,当我阅读Mockito的细节时,我发现这些方法doReturn(...).when(...)等效于when(...).thenReturn(...)。所以,我的问题是什么是有两个方法,做同样的事情或之间有什么细微的区别点doReturn(...).when(...)和when(...).thenReturn(...)?
Mockito
Spring MVC
Controller
doReturn(...).when(...)
when(...).thenReturn(...)
任何帮助,将不胜感激。
存根的两种语法大致相同。但是,你始终可以将其doReturn/when用于存根。但是在某些情况下你不能使用when/thenReturn。废除无效方法就是这样的一种。其他方法包括与Mockito间谍一起使用,并多次重复使用相同的方法。
doReturn/when
when/thenReturn
可以when/thenReturn提供(doReturn/when但不能提供)的一件事是在编译时对返回的值进行类型检查。但是,我认为这几乎没有任何价值-如果你输入的类型有误,则可以在运行测试后立即发现。
我强烈建议仅使用doReturn/when。学习两种语法何时会奏效没有意义。
你可能希望参考我在Forming Mockito“语法”中的答案-有关一个非常紧密相关的问题的更详细的答案。
Forming Mockito