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



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

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

Reply via email to