一尘不染

Java Mockito-doReturn()和when()之间的区别

java

我目前正在使用MockitoSpring MVC应用程序中模拟我的服务层对象的过程中,我想在其中测试我的Controller方法。但是,当我阅读Mockito的细节时,我发现这些方法doReturn(...).when(...)等效于when(...).thenReturn(...)。所以,我的问题是什么是有两个方法,做同样的事情或之间有什么细微的区别点doReturn(...).when(...)when(...).thenReturn(...)

任何帮助,将不胜感激。


阅读 1764

收藏
2020-03-13

共1个答案

一尘不染

存根的两种语法大致相同。但是,你始终可以将其doReturn/when用于存根。但是在某些情况下你不能使用when/thenReturn。废除无效方法就是这样的一种。其他方法包括与Mockito间谍一起使用,并多次重复使用相同的方法。

可以when/thenReturn提供(doReturn/when但不能提供)的一件事是在编译时对返回的值进行类型检查。但是,我认为这几乎没有任何价值-如果你输入的类型有误,则可以在运行测试后立即发现。

我强烈建议仅使用doReturn/when。学习两种语法何时会奏效没有意义。

你可能希望参考我在Forming Mockito“语法”中的答案-有关一个非常紧密相关的问题的更详细的答案。

2020-03-13