Mocking a private method in junit using Powermockito

minu roy

I need to mock following method call carBookBuilder.setTrip(protoConverter.convertTrip(carBookRequest, location)), But When carBookBuilder.setTrip(protoConverter.convertTrip(carBookRequest, location)) is calling i should just return mocking tripdetails and skip protoConverter.convertTrip(carBookRequest, location) method call.

ProtoRequestAdapterTest.java

@RunWith(PowerMockRunner.class)
@PrepareForTest({ProtoRequestAdapter})
class ProtoRequestAdapterTest {

    @Test
    public void testPopulateCarBookTest() {
        CarApiToProtoConverter carApiToProtoConverter;
        carApiToProtoConverter =  PowerMockito.mock(CarApiToProtoConverter.class);
        PowerMockito.when(carApiToProtoConverter.convertTripDetails(carBookRequest, locale)).thenReturn(tripDetails);
    }
}

ProtoRequestAdapter.java

class ProtoRequestAdapter {
     private CarBookRequest populateCarBook(BookingRequest bookingRequest) {
        CarBookRequest newCarBookReq = bookingRequest.getCarBookRequest();
        CarBookRequest.Builder carBookBuilder = CarBookRequest.newBuilder();

        ProtoConverter protoConverter =
                new ProtoConverter(refData, location);
        carBookBuilder.setTrip(protoConverter.convertTrip(carBookRequest, location));
        return carBookBuilder;
    }
}
Seb

I see several problems here. If I understand you correctly, you are trying to test ProtoRequestAdapter#populateCarBook.

First of all you should make the method public or at least protected, as otherwise your unit test can not call it.

Next the method you are trying to mock is ProtoConverter#convertTrip, which is not private, as otherwise your code would not compile. More problematic is that you are instantiating it directly in your code, which makes it impossible to replace it with a mock.

I would strongly suggest you to inject it into your class (or at least move the instantiation into a (protected) getProtoConverter()-method, which you can overwrite in your test).

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Junit Mocking Private Method

Mocking a static method using powermockito

Mocking private method call using PowerMockito returns null instead of returning List<String>: (Want not to execute private method)

Mocking private method with PowerMockito only works starting with second method call

PowerMockito: mocking private method and get a value without accessing it

Mock a private void method using PowerMockito

PowerMockito+Junit - Mocking System.getenv

Verify private static method on final class gets called using PowerMockito

How to Mock private method which is called from the constructor using PowerMockito

Mocking private method with PowerMock

Junit ignore method mocking

Mocking method for all instances of class with PowerMockito

Why when mocking a private method using Powermock is calling the real method?

PowerMockito throwing exception when mocking static method of an enum and using that enum object inside a switch statement

Mocking private method of class under test using JMockit

Mock a jUnit test using powermockito

PowerMockito mocking static method fails when calling method on parameter

Mockito / Powermockito mock private void method

PowerMockito verify private method called x times

powermockito spy private void method invocation

Powermockito private method mock NullPointerException. Calls the private method

PowerMockito: got InvalidUseOfMatchersException when use matchers mocking static method

Getting nullpointer exception when trying to mock package private method using powermockito

Getting nullpointer exception when trying to mock package private method using powermockito

How do you expect and verify a private void method call using PowerMockito and TestNG?

Junit mocking files using jmockit

Why mocking a private method enters method?

Mocking public method inside a private method

Testing private methods in java using Powermockito