Powermockito静态和非静态方法链



我希望静态工厂方法返回的对象的非静态方法返回特定的结果。

在我完成了这个设置之后,我的测试代码将通过正在测试的另一段代码间接调用ConnectionFactory.getConn("ABC")。

PowerMockito.when (ConnectionFactory.getConn (ABC) .getCurrentStatus ()) .thenReturn (ConnectionStatus.CONNECTED);

我得到了上面语句的NPE。

  • 我已经有@PrepareForTest({FXAllConnectionFactory.class, ConnectionStatus.class})在我的junit测试类的开始。

正确的做法是什么?

提前感谢:)

没有点在创建一个流畅/链式调用为您的测试设置。

你看:

PowerMockito.when(ConnectionFactory.getConn("ABC").getCurrentStatus()).thenReturn(ConnectionStatus.CONNECTED);

可能意味着配置两个调用:

  1. ConnectionFactory.getConn("ABC")
  2. getCurrentStatus()对第一次呼叫的结果

是什么让你认为PowerMockito神奇地知道第一次调用getConn()应该返回什么 ?

换句话说:

  1. 首先提供一个模拟连接对象X;并配置模拟,以便getConn()返回该对象
  2. 除此之外,你必须配置X在调用getCurrentStatus()时返回所需的值…在X !

所以,答案实际上是:你想做的是不可能的。这个想法是;您指定的行为如下:

 when A.foo() is called; then return some X

在PowerMockito中没有魔法可以把

when A.foo().bar() is called thren return Y

when A.foo() is called, return X; when X.bar() is called return Y

相关内容

  • 没有找到相关文章

最新更新