Мне нужно добавить фиктивный объект в метод, в котором создается новый объект 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
.
Я не знаю, может ли он не соответствовать конструктору или как.
Любая помощь будет оценена, спасибо.