Thanks Nils-H I see what you mean. My action actually is implementing ServletRequestAware, so I just tried what you suggested and I can see how that's a bit neater actually. I'll adopt your approach.
Thanks for the tip Richard Gundersen Java Developer Email: [EMAIL PROTECTED] Phone: 01618302398 Fax: 01618342536 London Scottish Bank plc 24 Mount Street Manchester M2 3LS -----Original Message----- From: Nils-Helge Garli Hegvik [mailto:[EMAIL PROTECTED] Sent: Thursday, November 06, 2008 1:05 PM To: Struts Users Mailing List Subject: Re: Unit Testing Advice The complexity of the test setup often reflects how much of the framework itself you involve in your tests. Usually, I try to avoid mocking the context and http objects by implementing the *Aware interfaces and simply injecting simple Map objects, testing the action in isolation. I realize that this is not always possible though... Nils-H On Thu, Nov 6, 2008 at 1:53 PM, Gundersen, Richard <[EMAIL PROTECTED]> wrote: > This is what I have so far. It works but I would appreciate a little > peer review (particularly regarding how I set up my session and the > logged in user) > > Thanks! > > ************************************************ > > @Resource > private CardPaymentAction cardPaymentAction; > > ActionContext actionContext; > ServletActionContext servletActionContext; > private HttpServletRequest request; > private HttpServletResponse response; > private MockServletContext servletContext; > > public CardPaymentActionTest() {} > > @Test > public void testPayment() { > setupContext(); > > // Mastercard payment which requires authentication > CustomerPaymentDetails details = new > CustomerPaymentDetails(); > details.setAccountNumber("955784322"); > > cardPaymentAction.setCustomerPaymentDetails(details); > String result = cardPaymentAction.makePayment(); > > assertTrue(BaseAction.Results.ACS_HANDLER.equals(result)); > } > > /** > * Setup the context (request, session etc) for our action tests > * (Move to setUp() when I figure out why it's not being > executed) > */ > private void setupContext() { > Map extraContext = new HashMap(); > > request = new MockHttpServletRequest(); > response = new MockHttpServletResponse(); > servletContext = new MockServletContext(); > extraContext.put(HTTP_REQUEST, request); > extraContext.put(HTTP_RESPONSE, response); > extraContext.put(SERVLET_CONTEXT, servletContext); > Map session = new > org.apache.struts2.dispatcher.SessionMap(request); > session.put("profile", createCustomer()); // fake a logged in > user > extraContext.put("session", session); > > actionContext = new ActionContext(extraContext); > ServletActionContext.setContext(actionContext); > } > > As a responsible corporate citizen, London Scottish Bank plc asks you to consider the environment before printing this email. > > *** Disclaimer *** > > This electronic communication is confidential and for the exclusive use of the addressee. It may contain private and confidential information. The information, attachments and opinions contained in this E-mail are those of its author only and do not necessarily represent those of London Scottish Bank PLC or any other members of the London Scottish Group. > > If you are not the intended addressee, you are prohibited from any disclosure, distribution or further copying or use of this communication or the information in it or taking any action in reliance on it. If you have received this communication in error please notify the Information Security Manager at [EMAIL PROTECTED] as soon as possible and delete the message from all places in your computer where it is stored. > > We utilise virus scanning software but we cannot guarantee the security of electronic communications and you are advised to check any attachments for viruses. We do not accept liability for any loss resulting from any corruption or alteration of data or importation of any virus as a result of receiving this electronic communication. > > Replies to this E-mail may be monitored for operational or business reasons. London Scottish Bank PLC is authorised and regulated by the Financial Services Authority. > > > London Scottish Bank plc, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 973008 England. > > Subsidiary Companies:- > > London Scottish Finance Limited, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 233259 England. > > London Scottish Broking Limited, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 230110 England. > > Robinson Way & Company Limited, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 885896 England. > > ______________________________________________________________________ > This email has been scanned by the MessageLabs Email Security System. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ As a responsible corporate citizen, London Scottish Bank plc asks you to consider the environment before printing this email. *** Disclaimer *** This electronic communication is confidential and for the exclusive use of the addressee. It may contain private and confidential information. The information, attachments and opinions contained in this E-mail are those of its author only and do not necessarily represent those of London Scottish Bank PLC or any other members of the London Scottish Group. If you are not the intended addressee, you are prohibited from any disclosure, distribution or further copying or use of this communication or the information in it or taking any action in reliance on it. If you have received this communication in error please notify the Information Security Manager at [EMAIL PROTECTED] as soon as possible and delete the message from all places in your computer where it is stored. We utilise virus scanning software but we cannot guarantee the security of electronic communications and you are advised to check any attachments for viruses. We do not accept liability for any loss resulting from any corruption or alteration of data or importation of any virus as a result of receiving this electronic communication. Replies to this E-mail may be monitored for operational or business reasons. London Scottish Bank PLC is authorised and regulated by the Financial Services Authority. London Scottish Bank plc, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 973008 England. Subsidiary Companies:- London Scottish Finance Limited, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 233259 England. London Scottish Broking Limited, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 230110 England. Robinson Way & Company Limited, Registered Office: 201 Deansgate, Manchester M3 3NW Registered Number 885896 England. ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]