If you get it into a protected instance method, you can also make an inner
class in your test, something like TestablePutJMS extends PutJMS, and
overrides that method to return a mock or whatever you want. That is a
common pattern in a lot of the processor tests.

On Fri, Dec 18, 2015 at 3:44 PM, Matt Burgess <[email protected]> wrote:

> You could move the one static call into an instance method of PutJMS, and
> use Mockito.spy() to get a partial mock of the processor, then use when()
> to override the instance method in the test. Not sure if that's how it's
> done in other places but it's worked for me in the past.
>
> Regards,
> Matt
>
> Sent from my iPhone
>
> > On Dec 18, 2015, at 3:20 PM, Joe Skora <[email protected]> wrote:
> >
> > For unit testing, one problem I've run into is overriding the returns
> from
> > static class methods.
> >
> > For instance, PutJMS contains this code:
> >
> > try {
> >>    wrappedProducer = JmsFactory.createMessageProducer(context, true);
> >>    logger.info("Connected to JMS server {}",
> >>            new Object[]{context.getProperty(URL).getValue()});
> >> } catch (final JMSException e) {
> >>    logger.error("Failed to connect to JMS Server due to {}", new
> >> Object[]{e});
> >>    session.transfer(flowFiles, REL_FAILURE);
> >>    context.yield();
> >>    return;
> >> }
> >
> > where JmsFactory.createmessageProducer call being defined as
> >
> > public static WrappedMessageProducer createMessageProducer(...
> >
> > which presents a problem since it can't be easily overridden for a unit
> > test.  Exercising the
> >
> > How you handle this problem?
> >
> > Regards,
> > Joe
>

Reply via email to