我有一个要求,我需要模拟创建Apache Commons Librabry的新GenericObjectPool对象。
模拟代码:
GenericObjectPool<Foo> objectPool = new GenericObjectPool<Foo>(Bar);
作为参数传递给 GenericPoolObject 构造函数的模拟栏对象工作正常。
用于模拟 GenericObjectPool 的代码:
Bar mockBar = PowerMockito.mock(Bar.class);
GenericObjectPool<Foo> mockPool = PowerMockito.mock(GenericObjectPool.class);
PowerMockito.whenNew(Bar.class).withNoArguments().thenReturn(mockBar);
PowerMockito.whenNew(GenericObjectPool.class).withArguments(mockBar).thenReturn(mockPool);
PowerMockito.when(mockPool.borrowObject()).thenReturn(dummyObject);
在@PrepareForTest中,包括了创建 GenericObjectPool 新对象的类。但是我没有得到模拟的对象,它总是返回新的 GenericObjectPool() 实例。
我通过将模拟的代码移动到单独的测试方法中来使其工作。早些时候,我在设置方法中使用@BeforeClass注释进行模拟。