Christian,
I'm not sure I understand, Did you solve your issue?

Twitter     :http://www.twitter.com/m_cucchiara
G+          :https://plus.google.com/107903711540963855921
Linkedin    :http://www.linkedin.com/in/mauriziocucchiara

Maurizio Cucchiara



On 14 October 2011 18:23, Christian Grobmeier <grobme...@gmail.com> wrote:
> Forget the latest comment:
>
> On Fri, Oct 14, 2011 at 6:17 PM, Christian Grobmeier
> <grobme...@gmail.com> wrote:
>> Another thing, even when I do that below, I only get the Result of the
>> first Action. In my case i return json in each of the two actions. But
>> I always get the first response. Probably something else needs to be
>> reinitialized. Not sure what, tipps welcome
>
> It works with the fix below. I somehow was to stupid with my new ide
>
> Cheers
>
>
>>
>>
>>
>> On Fri, Oct 14, 2011 at 5:54 PM, Christian Grobmeier
>> <grobme...@gmail.com> wrote:
>>> Guys,
>>> its getting complicated. But I digged out a nasty thing in Junit
>>> testing. I know whats wrong but looking for advise to fix the correct
>>> place in Struts.
>>>
>>> Imagine:
>>>
>>> @RunWith(SpringJUnit4ClassRunner.class)
>>> @ContextConfiguration(locations = {"classpath*:applicationContext.xml"})
>>> public class MyClass extends StrutsSpringJUnit4TestCase<MyAction> {
>>>
>>> @Test public void testMyStuff() {
>>>       this.executeAction("/login.action");
>>>       this.executeAction("/dostuff.action");
>>>       Assert.assertEquals(1, this.getAction().methodFromMyAction());
>>> }
>>> }
>>>
>>>
>>> So imagine what happens when I call getAction() which is MyAction for
>>> the compiler?
>>> Its a ClassCastException. Because actually its coming a LoginAction
>>> from the first call back
>>>
>>> Here is how you can bring it to fly, in my special case:
>>>
>>> this.executeAction('/login.action');
>>>
>>> SessionMap session =
>>> (SessionMap)ServletActionContext.getValueStack(request).getContext().get("session");
>>> SessionUser sUser = (SessionUser)session.get("myuser");
>>>
>>> // Reinit request stuff
>>> this.request = new MockHttpServletRequest();
>>> this.response = new MockHttpServletResponse();
>>> this.pageContext = new MockPageContext(servletContext, request, response);
>>>
>>> // Put stuff back into session what you need
>>>  this.request.getSession().setAttribute("tabuser", sUser);
>>>
>>> // now it works:
>>> this.executeAction("/dostuff.action");
>>> Assert.assertEquals(1, this.getAction().methodFromMyAction());
>>>
>>>
>>> So far so good - it seems like the first calls meta data like session
>>> is somehow stored somewhere. To make it all work you'll need to reinit
>>> the whole StrutsJUnit4TestCase mock objects - but then you'll loose
>>> your session data you probably need for the second call.
>>>
>>> If we don't fix it, people can only use this for one test class = one
>>> actions tests. But then how do you make tests for action flows?
>>>
>>> Now I need some good ideas how a potential test can look like- ideas 
>>> welcome.
>>>
>>> In addition I would like to open an issue for that.
>>>
>>> Cheers
>>> Christian
>>>
>>>
>>> --
>>> http://www.grobmeier.de
>>>
>>
>>
>>
>> --
>> http://www.grobmeier.de
>>
>
>
>
> --
> http://www.grobmeier.de
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> For additional commands, e-mail: dev-h...@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
For additional commands, e-mail: dev-h...@struts.apache.org

Reply via email to