PowerMock, когдаNew все еще собирается в код конструктора - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь заставить Powermock работать, издеваясь над конструктором.В тестируемом мной методе вызывается конструктор другого класса (и принимает много параметров, пустой конструктор недоступен).Я не хочу, чтобы этот конструктор вызывался, поскольку у меня нет всех необходимых ему параметров / значений.

@RunWith(PowerMockRunner.class)
@PrepareForTest({FeatureManager.class, MyFilter.class})
public class ApplicabilityTest {
@Before
    public void setUp() {
PowerMockito.mock(Filter.class);
        MyFilter myFilterMock = PowerMockito.mock(MyFilter.class);
        try {

  PowerMockito.whenNew(MyFilter.class).withAnyArguments()
.thenReturn(MyFilterMock);
}

@Test
public void testAllApplicableStuff() {
    ApplicabilityComponent applicabilityComponent = new ApplicabilityComponent();
    Map response = ApplicabilityComponent.getAllApplicableExclusions(myInputData);
}

Однако, когда я вызываю метод, в котором вызывается конструктор myFilter, он все равно входит в код конструктора.Чего мне не хватает?

Вот так выглядит вызов конструктора в реальном коде:

final MyFilter mFilter = new 
MyFilter(
                        getNames(),
                        getPlaces(),
                        null,
                        provider,
                        procedure,
                        null,
                        new ArrayList(),
                        getServiceCategory(),
                        getCategory(),
                        null,
                        null,
                        getEffectiveDate(),
                        null);

1 Ответ

0 голосов
/ 29 мая 2018

Я не уверен, почему это работает, но это то, что я сделал, чтобы решить проблему.Я издевался над объектом с помощью Mockito, а не Powermock, а остальное тогда просто работало как есть:

@Before
    public void setUp() {
        MyFilter myFilterMock = Mockito.mock(MyFilter.class);
    try {

  PowerMockito.whenNew(MyFilter.class).withAnyArguments().thenReturn(MyFilterMock);
}
...