2009/1/16 cmoulliard <cmoulli...@gmail.com>:
>
> I try this but nothing is displayed on the console :
>
>    @Test
>    public void testUnMarshallMessage() throws Exception {
>
>        for(Exchange exch : resultEndpoint.getExchanges()) {
>                models = (List<HashMap<String, Object>>) 
> exch.getIn().getBody();
>
>                Iterator it = models.iterator();
>
>                LOG.info("Before list iteration");
>
>                while(it.hasNext()){
>                        modelObjects = (HashMap<String, Object>) it.next();
>                        LOG.info("while iteration");
>                        for (String key : modelObjects.keySet()) {
>                                LOG.info("get object");
>                                Object obj = modelObjects.get(key);
>                                LOG.info("Data : " + obj.toString());
>                        }
>                }
>
>        }

As I said in the previous mail - you must setup the expectations and
assert they are satisfied *before* you look at the received exchanges.
So move these next two lines *before* the for loop.

>        resultEndpoint.expectedBodiesReceived(models);
>        resultEndpoint.assertIsSatisfied();
>
>
>
> James.Strachan wrote:
>>
>> 2009/1/16 cmoulliard <cmoulli...@gmail.com>:
>>>
>>> @James,
>>>
>>> I'm a little bit bored because I don't know if the following code works
>>> or
>>> not. The test is passed but I don't know if assertEquals is executed.
>>
>> You could always add a counter inside the loop and assert its
>> incremented once :)
>>
>>
>>>    @Test
>>>    public void testUnMarshallMessage() throws Exception {
>>>
>>>        resultEndpoint.expectedMessageCount(1);
>>>
>>>        for(Exchange exch : resultEndpoint.getExchanges()) {
>>>                models = (List<HashMap<String, Object>>)
>>> exch.getIn().getBody();
>>>
>>>                Iterator it = models.iterator();
>>>                double count = 0;
>>>                while(it.hasNext()){
>>>                        modelObjects = (HashMap<String, Object>)
>>> it.next();
>>>                        count++;
>>>                }
>>>
>>>                assertEquals(100, count);
>>>
>>>        }
>>>
>>>        resultEndpoint.assertIsSatisfied();
>>
>> the above line needs to be moved above the for loop - more below...
>>
>>>    }
>>>
>>> I have different questions :
>>>
>>> - Can we mix mockendpoint assertion with junit assertions ?
>>
>> Sure.
>>
>> The trick is - you execute the resultEndpoint.assertIsSatisfied();
>> code first. This then pauses the test until asynchronously the
>> messages arrive and expectations are met - or things timeout and the
>> test fails. Then after this point - you can grab the received messages
>> and perform any particular JUnit assertions you want on the received
>> messages.
>>
>> In psuedocode a mock endpoint test looks like
>>
>> * get mock endpoints and add expectations
>> * assert expectations are met
>> * perform any extra JUnit assertions on received messages (or
>> endpoints, beans whatever)
>>
>> Another option is to add an assertion to be evaluated as the messages
>> arrive - e.g.
>>
>> mockEndpoint.allMessages().predicate().xpath('/foo/bar = 'abc'");
>> mockEndpoint.message(3).predicate().xpath('/foo/bar = 'abc'");
>>
>> but its often easier to just do the assertions after the expectations
>> are met (though the downside is that more messages could arrive after
>> this point if you have an async publisher sending continuously to the
>> mock endpoint).
>>
>> --
>> James
>> -------
>> http://macstrac.blogspot.com/
>>
>> Open Source Integration
>> http://fusesource.com/
>>
>>
>
>
> -----
> Charles Moulliard
> SOA Architect
>
> My Blog :  http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/
> --
> View this message in context: 
> http://www.nabble.com/only-testMocksAreValid-is-executed-by-Camel-Spring-unit-test-%21%21-tp21436628s22882p21502317.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Reply via email to