我希望静态工厂方法返回的对象的非静态方法返回特定的结果。
完成此设置后,我的测试代码将通过另一段正在测试的代码间接调用ConnectionFactory.getConn(“ABC”)。
PowerMockito.when(ConnectionFactory.getConn( “ABC”)getCurrentStatus())thenReturn(ConnectionStatus.CONNECTED);
我得到了上述声明的NPE。
这样做的正确方法是什么?
提前致谢:)
答案 0 :(得分:0)
我猜为测试设置创建流畅/链式调用时,没有点。
你看:
PowerMockito.when(ConnectionFactory.getConn("ABC").getCurrentStatus()).thenReturn(ConnectionStatus.CONNECTED);
可能是为了配置两个来电:
ConnectionFactory.getConn("ABC")
然后getCurrentStatus()
关于第一次通话的结果是什么让你觉得PowerMockito神奇地知道第一次调用getConn()应该返回什么?
换句话说:
所以,答案实际上是:你想做的事情是不可能的。这个想法是;您指定行为,如:
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
您必须逐步指定。