当前位置: 首页 > 面试题库 >

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

哈泰
2023-03-14
问题内容

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

任何帮助,将不胜感激。


问题答案:

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

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

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

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



 类似资料:
  • 我目前正在使用Mockito在一个spring MVC应用程序中模拟我的服务层对象,我想在其中测试我的控制器方法。但是,由于我一直在阅读Mockito的细节,我发现方法等同于。所以,我的问题是,有两个方法做同样的事情有什么意义,或者和之间有什么微妙的区别? 如有任何帮助,我们将不胜感激。

  • 当使用间谍对象作为测试对象时,如果我们不想在我们正在测试的方法中调用嵌套方法,这些方法中的哪一个(doReport-time或whing-thenBack)可以用来模拟这些嵌套方法?有没有办法避免在我们将要测试的方法中调用真正的方法?

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • 这是我的实际服务方法。在测试时,它给我的变量为空。用户和响应 我试图写一个测试用例和模拟方法findByEmail()和保存(),但同时嘲笑我没有收到用户对象在返回中提到的thenback()和doback()。 有人能帮忙吗。