I want to write test for GetEventPlannersRequest class.
This class looks:
class GetEventPlannersRequest(requestIn: GetEventPlannersRequest.Request,
okListener: RabbitResponse.RabbitResponseListener<GetEventPlannersResponse>,
errorListener: RabbitResponse.RabbitErrorListener
) : AbstractWfmRabbitRequest<GetEventPlannersRequest.Request, GetEventPlannersResponse>(requestIn, GetEventPlannersResponse::class.java, okListener, errorListener) {
override fun getExchange(): String {
return RabbitModuleConfig.EXCHANGE_MOBILE_OUT
}
override fun getRoutingKey(): String {
return WfmRabbitModuleConfig.ROUTING_KEY_WFM_EVENT_PLANNERS
}
override fun getType(): String {
return WfmRabbitModuleConfig.TYPE_WFM_EVENT_PLANNERS
}
So in tests I did something like this:
@Mock
lateinit var requestIn: GetEventPlannersRequest.Request
@Mock
lateinit var okListener: RabbitResponse.RabbitResponseListener<GetEventPlannersResponse>
@Mock
lateinit var errorListener: RabbitResponse.RabbitErrorListener
@Before
fun before() {
MockitoAnnotations.initMocks(this)
}
@Test
fun getExchange() {
val getEventPlannersRequest = GetEventPlannersRequest(requestIn, okListener, errorListener)
assertEquals(getEventPlannersRequest.exchange, "mobile.outgoing")
}
And where is the problem?
Problem is that the parent class GetEventPlannersRequest
public AbstractRabbitRequest(K body, Class<T> clazz, RabbitResponse.RabbitResponseListener<T> listener, RabbitResponse.RabbitErrorListener error) {
super(FS.get().getSession().getTerminalId(), body, clazz, listener, error);
}
Which throwing java.lang.NullPointerException.
Is it possible to mock it somehow ? Or I need to refactor it somehow ?
UPDATE:
For now I added additional constructor:
public AbstractRabbitRequest(String terminalId, K body, Class<T> clazz, RabbitResponse.RabbitResponseListener<T> listener, RabbitResponse.RabbitErrorListener error) {
super(terminalId, body, clazz, listener, error);
}
So I can mock also terminalId and test it but if it is possible to mock it I also would like to know how: )