【发布时间】:2018-05-02 19:34:13
【问题描述】:
我需要将一个模拟对象注入一个实例化新MyClass 对象的方法中。
private MyClass<?> c;
public void myMethod(final String s) {
c = new MyClass<>(s);
c.callToMock();
}
我正在模拟的类有一个带有泛型参数的构造函数。
public class MyClass<T> {
public MyClass(final T t) {
// do whatever
}
}
现在,在我的测试中,我为班级创建了一个模拟。
当new 被调用时,它应该注入那个模拟。
@RunWith (PowerMockRunner.class)
public class TestClass {
@SuppressWarnings ("unchecked")
public void myMethodTest() throws Exception {
MyClass<String> myMock = (MyClass<String>) EasyMock.createMock(MyClass.class);
PowerMock.expectNew(MyClass.class, "my argument")
.andReturn(myMock);
myMock.callToMock();
EasyMock.expectLastCall().once();
EasyMock.replay(myMock);
PowerMock.replayAll();
...
}
当我运行测试时,它没有捕捉到new 调用,只是实例化了一个实际的MyClass 对象。
不知道是不能匹配构造函数还是什么。
任何帮助将不胜感激,谢谢。
【问题讨论】: