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

Mockito可以在不考虑参数的情况下存根方法吗?

穆铭晨
2023-03-14
问题内容

我正在尝试使用Mockito测试一些旧代码。

我想存根FooDao用于生产的a如下:

foo = fooDao.getBar(new Bazoo());

我可以写:

when(fooDao.getBar(new Bazoo())).thenReturn(myFoo);

但是明显的问题是,getBar()从来没有使用与Bazoo我存根方法相同的对象来调用它。(请该new运算符!)

如果我可以以不myFoo考虑参数的方式返回该方法的方法来对它进行存根,我将非常喜欢。失败的话,我会听取其他解决方法的建议,但我真的想避免更改生产代码,直到有合理的测试范围为止。


问题答案:
when(
  fooDao.getBar(
    any(Bazoo.class)
  )
).thenReturn(myFoo);

或(避免nulls):

when(
  fooDao.getBar(
    (Bazoo)notNull()
  )
).thenReturn(myFoo);

不要忘记导入匹配器(有许多其他匹配器可用):

对于Mockito 2.1.0及更高版本:

import static org.mockito.ArgumentMatchers.*;

对于旧版本:

import static org.mockito.Matchers.*;


 类似资料:
  • 我正在编写一个从站点中抓取信息的python代码,但我必须首先去掉一些cookies弹出窗口。要单击右侧按钮,我需要它们的XPath(据我所知)。问题是XPath的一部分每次都发生变化,我不知道如何找到它们,因为它们实际上没有任何属性,比如ID之类的。 这是按钮的HTML: 这是我现在使用的命令: 这是XPath: 变量每次都变,所以我改变了14。

  • 问题内容: 我有一个类是SUT,一个类是它的合作者。电话上以“ ”作为参数。然后,将为此添加更多元素,以使其状态与调用时的状态不同。这是我的测试用例。 请注意,协作者实际上是一个间谍对象,而不是模拟对象。该测试用例将失败,因为即使使用等于的参数调用了该测试用例,也因为它被修改了,并且其当前值不再等于。但是,这是应该工作的方式,所以我想知道是否有一种方法可以让Mockito在调用方法时存储参数快照,

  • 我有一个带有私有方法的类,该方法调用一些外部类并执行它,如果不使用powermock,我如何防止这种情况发生?(该项目使用Junit5,目前还不支持powermock)。 我考虑过将这些函数移到外面,但我觉得有时方法确实属于特定的类,因为它们是它的一部分,将它们移出对我来说没有意义,下面只是一个例子来说明。 我已经知道大多数人会说不要测试私有方法,但a.我不完全同意,b.我不想在这里测试这个方法,

  • 问题内容: 我发现进行辅助查询来检查更多结果以显示 更多加载 按钮是非常不专业的。 我正在使用PDO,有什么方法可以在没有限制过滤器的情况下获得找到的总行数,但仍在过滤结果? 当前代码: 问题答案: 仅MySQL AFAIK: 当然,对于数据库服务器而言,查询一次就像查询所有记录一样繁重。对于非MySQL使用,此查询当然比获取 所有 记录的行数更好:

  • 我想持有模板类的。但是,我不想将类B也作为模板类。在我的理解中,任何类型的shared_ptr都将具有相同的内存布局。所以我想知道在这种情况下有什么变通办法吗?

  • 我有一个contenteditable div,用户可以在其中输入文本。我希望文本自动换行,但不像默认的空格或连字符,而是像这样: 我如何才能实现这一点?