Stubbing Static Factory in CUT with Mockito



我的测试类是ClassA,它在其私有方法之一中使用静态工厂(假设CarFactory)方法getCar(XXX xxx)返回Car

CarFactory逻辑的一部分是验证给定的 xxx 参数是否满足某些条件。

我尝试像下面这样使用Mockito:

@Mock private Car mockForCar;
@Mock private XXX xxxMock;
...
when(CarFactory.getCar(xxxMock)).thenReturn(mockForCar);

但是我得到一个例外,即 xxxMock 在CarFactory无效.

为什么调用真正的getCar(xxx)方法而不是存根方法?

有没有更好的方法?

来自 Mockito FAQ:

我可以模拟静态方法吗?

不。Mockito更喜欢面向对象和依赖注入 难以理解和更改的静态程序代码。如果你 处理可怕的遗留代码,您可以使用JMockit或Powermock来模拟 静态方法。

如果你想使用 Mockito 存根它,你应该让它成为非静态的并注入工厂。 无论如何,这是更好的OO设计。

相关内容

  • 没有找到相关文章

最新更新