Junit powermockito静态和非静态方法链

Junit powermockito静态和非静态方法链,junit,powermock,powermockito,Junit,Powermock,Powermockito,我希望静态工厂方法返回的对象的非静态方法返回特定的结果 完成此设置后,我的测试代码将通过另一段正在测试的代码间接调用ConnectionFactory.getConn(“ABC”) PowerMockito.when(ConnectionFactory.getConn(“ABC”).getCurrentStatus())。然后返回(ConnectionStatus.CONNECTED) 我得到了上述声明的NPE 我已经在junit测试类的开头有@PrepareForTest({FXAllCon

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

完成此设置后,我的测试代码将通过另一段正在测试的代码间接调用ConnectionFactory.getConn(“ABC”)

PowerMockito.when(ConnectionFactory.getConn(“ABC”).getCurrentStatus())。然后返回(ConnectionStatus.CONNECTED)

我得到了上述声明的NPE

  • 我已经在junit测试类的开头有@PrepareForTest({FXAllConnectionFactory.class,ConnectionStatus.class})
正确的做法是什么

提前感谢:)

我想为您的测试设置创建一个流畅的/链接的调用是没有意义的

你看,

PowerMockito.when(ConnectionFactory.getConn("ABC").getCurrentStatus()).thenReturn(ConnectionStatus.CONNECTED);
可能用于配置两个调用:

  • ConnectionFactory.getConn(“ABC”)
    然后
  • getCurrentStatus()
  • 是什么让您认为PowerMockito神奇地知道第一次调用getConn()应该返回什么

    换言之:

  • 首先提供模拟连接对象X;并配置模拟,以便getConn()返回该对象
  • 除此之外,还必须将X配置为在调用getCurrentStatus()时返回所需的值。。。在X上 所以,答案实际上是:你想做的是不可能的。想法是;您可以指定以下行为:

     when A.foo() is called; then return some X
    
    PowerMockito中没有魔法力量可以转动

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

    你必须一步一步地指定它。

    我想为你的测试设置创建一个流畅的/链接的调用是没有意义的

    你看,

    PowerMockito.when(ConnectionFactory.getConn("ABC").getCurrentStatus()).thenReturn(ConnectionStatus.CONNECTED);
    
    可能用于配置两个调用:

  • ConnectionFactory.getConn(“ABC”)
    然后
  • getCurrentStatus()
  • 是什么让您认为PowerMockito神奇地知道第一次调用getConn()应该返回什么

    换言之:

  • 首先提供模拟连接对象X;并配置模拟,以便getConn()返回该对象
  • 除此之外,还必须将X配置为在调用getCurrentStatus()时返回所需的值。。。在X上 所以,答案实际上是:你想做的是不可能的。想法是;您可以指定以下行为:

     when A.foo() is called; then return some X
    
    PowerMockito中没有魔法力量可以转动

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

    您必须一步一步地指定该对象。

    ConnectionFactory.getConn(“ABC”)已设置,将返回一个correctType对象。然后您可以显示所有代码。如果您的代码将执行您期望它执行的操作,您将不会在这里,是吗?ConnectionFactory.getConn(“ABC”)已设置,并将返回一个correctType的对象。然后您可能会显示所有代码。如果您的代码将执行您期望它执行的操作,那么您不会在这里,是吗?