【问题标题】:Return same value for every instance of a method call为方法调用的每个实例返回相同的值
【发布时间】:2015-12-03 23:17:08
【问题描述】:

您好,我使用的不是 PowerMockito,而是普通的,并试图模拟这样的东西:

when(any(File.class).canWrite()).thenReturn(Boolean.FALSE)

但我得到了NullPointerException。基本上不模拟特定实例,我想模拟文件对象的任何和所有实例以返回 FALSEcanWrite()

有人可以帮忙吗?我可以模拟对象,但我正在测试的代码在静态方法中。

【问题讨论】:

  • 你认为any(..) 是做什么的?你为什么这么认为?
  • 我想我可以使用 PowerMock,但想知道是否有办法为现有框架内对 canWrite() 的所有调用返回 FALSE?

标签: java mockito


【解决方案1】:

这是不可能的。使用常规的 Mockito,您需要在 when() 调用中使用一些模拟对象,而不是任何匹配器。

对于你的例子,当你说 any(File.class)

when(any(File.class).canWrite()).thenReturn(Boolean.FALSE)

你需要有一个文件对象已经实例化为一个 Mock

File fileMock = mock(File.class);    
when(fileMock.canWrite()).thenReturn(Boolean.FALSE)

【讨论】:

  • 他也可以使用spy
  • 如果他能得到一个文件的实例,是的。我对这个问题的理解是,他希望在任何地方实例化的每个文件都被模拟。即使有间谍,只有普通的 Mockito,你也只能在获得对象实例的情况下这样做。
猜你喜欢
  • 2011-06-17
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多