java - Mocking config with spring boot isn't picking up property files -


i trying write integrationflow test. goes this:

jms(in) -> (find previous versions in db) -> reduce(in,1...n) -> (to db) -> jms(out)

so, no suprise: want mock db calls; dao beans. but, want pickup other beans through component scan; selectively scan packages except dao.

  • create test config , mock daos. no problem
  • follow spring boot instructions testing component scanned beans. no problem

i want verify sequence of steps , resultant output outbound jms queue see it. can me fill in blanks?

this cant tough! use of mocks seems problematic because plenty of essential fields final. reading everywhere , not coming clear path. inherited code btw

my error:

org.springframework.integration.messagedispatchingexception: dispatcher has no subscribers

here code

@configuration @importresource("classpath:retry-context.xml") public class lifecycleconfig {      @autowired     private messageproducersupport inbound;      @autowired     private messagehandler outbound;      @autowired     @qualifier("reducer")     private generictransformer<collection<extendedclaim>,extendedclaim> reducer;      @autowired     @qualifier("claimidtopojo")     private generictransformer<string,claimdomain> topojo;      @autowired     @qualifier("findpreviousversion")     private generictransformer<extendedclaim,collection<extendedclaim>> previousversions;      @autowired     @qualifier("savetodb")     private generichandler<extendedclaim> todb;      @bean     public directchannel getchannel() {         return new directchannel();     }      @bean     @autowired     public standardintegrationflow processclaim() {         return integrationflows.from(inbound).                 channel(getchannel()).                 transform(previousversions).                 transform(reducer).                 handle(extendedclaim.class,todb).                 transform(topojo).                 handle(outbound).get();     } } 

test config

@configuration public class testconfig extends abstractclstest {       @bean(name = "claimidtopojo")     public claimidtopojo getclaimidtopojo() {         return spy(new claimidtopojo());     }      @bean     public claimtoid getclaimtoidpojo() {         return spy(new claimtoid());     }      @bean(name = "findpreviousversion")     public findpreviousversion getfindpreviousversion() {         return spy(new findpreviousversion());     }      @bean(name = "reducer")     public reducer getreducer() {         return spy(new reducer());     }      @bean(name = "savetodb")     public savetodb getsavetodb() {         return spy(new savetodb());     }      @bean     public  messageproducersupport getinbound() {         messageproducersupport mock = mock(messageproducersupport.class); //        when(mock.isrunning()).thenreturn(true);         return mock;     }      @bean     public paymentdao getpaymentdao() {         return mock(paymentdao.class);     }      @bean     public claimdao getclaimdao() {         return mock(claimdao.class);     }      @bean     public messagehandler getoutbound() {         return new capturehandler<extendedclaim>();     }  } 

actual test won't load

   @runwith(springjunit4classrunner.class) @contextconfiguration(classes = {testconfig.class, lifecycleconfig.class}) public class claimlifecycleapplicationtest extends abstractclstest {       @autowired     private messagehandler outbound;      @autowired     @qualifier("reducer")     private generictransformer<collection<extendedclaim>,extendedclaim> reducer;      @autowired     @qualifier("claimidtopojo")     private generictransformer<string,claimdomain> topojo;      @autowired     @qualifier("findpreviousversion")     private generictransformer<extendedclaim,collection<extendedclaim>> previousversions;      @autowired     @qualifier("savetodb")     private generichandler<extendedclaim> todb;      @autowired     private directchannel defaultchannel;      @test     public void testflow() throws exception {          extendedclaim claim = getclaim();         message<extendedclaim> message = messagebuilder.withpayload(claim).build();         list<extendedclaim> previousclaims = arrays.aslist(claim);          defaultchannel.send(message);         verify(previousversions).transform(claim);         verify(reducer).transform(previousclaims);         verify(todb).handle(claim, anymap());         verify(topojo).transform(claim.getsubmitterclaimid());         verify(outbound);      }   } 

there lot of domain-specific object, can't test reproduce or find other issue code.

but see don't use @enableintegration on @configurations classes.


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

ios - Possible to get UIButton sizeThatFits to work? -