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